2010-04-17 102 views
2

我相信这很容易 - 但我现在无法弄清楚。根据矢量向数据框添加几个变量

基本上是:我的变数很长的矢量:

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

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

data$first <- NA 

但是因为我有一个长长的清单,我想要一个自动化的解决方案。 这不起作用

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

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

在此先感谢

回答

3

您可以通过使用括号,而不是$的名称访问使用可变列。

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

但是你可以看看rbind.fill()在重塑包(或plyr)中。

希望这有助于 艾蒂安

+0

完美 - 谢谢Etiennebr! - 它的作品 – Andreas 2010-04-17 19:36:52

+0

rbind.fill很棒。 – 2010-04-17 20:09:20

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 
+0

谢谢Marek。这是Etiennebr严格来说的一个更好的答案。但她确实给了rbind.fill - 而且速度很快。所以我已经接受了她的回答。但我不断学习:-) – Andreas 2010-04-25 15:57:32