【问题标题】:Why does this happen when assigning names in a function?为什么在函数中分配名称时会发生这种情况?
【发布时间】:2016-10-27 22:06:41
【问题描述】:

这样做:

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)

为什么会这样?

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    函数返回的是最后计算的表达式:c("name1","name2","name3")在第一个函数中,setDT(df) 在第二个函数中。

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2013-08-02
      • 2018-12-19
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2021-07-19
      • 1970-01-01
      相关资源
      最近更新 更多