为什么在函数中分配名称时会发生这种情况?

时间:2016-10-27 22:06:41

标签: r data.table

这样做:

x <- data.frame(a=1, b=2, c=3)

func <- function(df) {
  names(df) <- c("name1","name2","name3")
}

x<-func(x)

x转换为名称的字符向量

这样做:

x <- data.frame(a=1, b=2, c=3)

func <- function(df) {
  names(df) <- c("name1","name2","name3")
  setDT(df)
}

x<-func(x)

将x作为data.table返回。它与as.data.frame(x)的作用相同。

为什么会这样?

1 个答案:

答案 0 :(得分:2)

该函数返回的是最后一个求值表达式:第一个函数中的c("name1","name2","name3"),第二个函数中的setDT(df)

要更新作为参数传递的data.frame的名称,只需在update:

之后返回它
x <- data.frame(a=1, b=2, c=3)

func <- function(df) {
  names(df) <- c("name1","name2","name3")
  df # This line returns the data.frame
}

x<-func(x)