2

我相信这很容易 - 但我现在无法弄清楚。

基本上:我有一个很长的变量向量:

names <- c("first","second", "third")

我有一些数据,我现在需要添加变量。我可以做:

data$first <- NA

但由于我的清单很长,我想要一个自动化的解决方案。这行不通

for (i in 1:length(names)) (paste("data$", names[i],sep="") <- NA)

我想要这个的原因是我需要垂直合并到数据框,其中一个没有它应该拥有的所有变量。

提前致谢

4

2 回答 2

3

您可以使用方括号而不是 $ 来使用名称变量访问列。

for (name in names) data[name] <- NA

但是您可以查看 reshape 包(或 plyr)中的 rbind.fill()。

希望这会有所帮助,艾蒂安

于 2010-04-17T19:28:33.243 回答
3

正如您在示例中看到的那样

?`[<-.data.frame`

不需要循环,你可以做

data[names] <- NA

例子:

> (data <- data.frame(x=1:3, y=letters[1:3]))
  x y
1 1 a
2 2 b
3 3 c
> data[names] <- NA
> data
  x y first second third
1 1 a    NA     NA    NA
2 2 b    NA     NA    NA
3 3 c    NA     NA    NA
于 2010-04-20T08:26:08.947 回答