【问题标题】:add several variables to dataframe, based on vector基于向量向数据框添加几个变量
【发布时间】:2010-04-17 19:03:01
【问题描述】:

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

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

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

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

data$first <- NA

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

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

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

提前致谢

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      ?`[<-.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
      

      【讨论】:

      • 谢谢马雷克。严格来说,这是一个比 Etiennebr 更好的答案。但她确实给了 rbind.fill - 而且速度很快。所以我接受了她的回答。但我一直在学习:-)
      猜你喜欢
      • 2022-10-05
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      相关资源
      最近更新 更多