R:无法从函数内向数据帧添加行

  • 本文关键字:数据帧 添加行 函数 r
  • 更新时间 :
  • 英文 :


我有一个函数,我希望它将其结果添加到数据帧中。但是,这似乎不起作用。如果我尝试以下操作:

testdf <- data.frame(matrix(ncol = 1, nrow = 0))
testfunction <- function() {
testdf[nrow(testdf) + 1,] <- list("a")
}
testfunction()
testdf
[1] matrix.ncol...1..nrow...0.
<0 rows> (or 0-length row.names)

它不会添加行。但是,如果我直接执行testfunction()中的内容,它会起作用:

testdf[nrow(testdf) + 1,] <- list("a")
testdf
matrix.ncol...1..nrow...0.
1                          a

为什么会这样,如何从函数内向数据帧添加一行数据?

也许最好的方法是将数据框作为参数传递给函数,然后将修改后的数据框返回给调用方。

testfunction <- function(df) {
df[nrow(df) + 1,] <- list("a")
return(df)
}
testdf <- data.frame(matrix(ncol = 1, nrow = 0))
testdf <- testfunction(testdf)
testdf

您也可以保持所有内容相同,但使用全局赋值运算符<<-

testfunction <- function() {
testdf[nrow(testdf) + 1,] <<- list("a")    # generally bad
}

但是这样做有一些潜在的警告,我给出的第一个选项更可取。

最新更新