【发布时间】:2015-01-15 17:49:21
【问题描述】:
我想向多个数据框添加多个空列。我知道为 1 个数据帧执行此操作的代码是 df[,namevector] <- NA (other question)。 Namevector 是一个向量,其中包含应添加的空变量的名称。我有一个包含多个数据框的列表,所以我认为下面的代码可以解决问题。
a <- data.frame(x = 1:10, y = 21:30)
b <- data.frame(x = 1:10, y = 31:40)
c <- list(a,b)
namevector <- c("z","w")
EmptyVariables <- function(df) {df[,namevector] <- NA}
sapply(X = c, FUN = EmptyVariables)
我没有收到错误消息,但这两行代码也没有添加空列。
【问题讨论】:
-
您没有将结果分配给全局环境中的符号,因此它们仅存在于
sapply调用中,然后被标记为垃圾回收。不过,sapply函数不会更改原始数据帧。欢迎使用函数式编程。 -
还有一个我不认识的问题,那就是“EmptyVariables”函数的返回值是 NA。它应该被定义为
<- function(df) {df[,namevector] <- NA; df}