【问题标题】:Adding columns to a data table向数据表中添加列
【发布时间】:2013-10-05 00:11:18
【问题描述】:

我有一个 data.frame(或矩阵或任何其他表格数据结构对象):

df = data.frame(field1 = c(1,1,1),field2 = c(2,2,2),field3 = c(3,3,3))

我想复制它的部分列 - 在下面的向量中给出:

fields = c("field1","field2")

到已经有 1 个或多个列的新 data.table:

dt = data.table(fieldX = c("x","x","x"))

我正在寻找比以下更有效(和优雅)的东西:

for(f in 1:length(fields))
{
dt[,fields[f]] = df[,fields[f]]
}

【问题讨论】:

  • 我不明白你在做什么。你确定你的意思是data.table
  • 这只是我真正遇到的更大问题的玩具示例。我有一个表格数据结构对象(有很多字段),我想从中复制几个字段到 data.table。

标签: r data.table


【解决方案1】:

你可以使用cbind:

cbind(dt, df[fields])

但是,最有效的方法仍然可能是使用data.table 的引用分配:

dt[, (fields) := df[fields]]

【讨论】:

  • 有趣的是,您似乎可以同时添加列。例如,t = data.table(c1=1,c2=2); x = list(); x[1] <- 10; x[2] <- 100; invisible(foreach (i=1:2) %dopar% { input = x[[i]]; col = LETTERS[i]; t[ ,eval(col):= input] })
【解决方案2】:

我想你想要 cbind

cbind(dt, df[, 1:2])
# fieldX field1 field2
# 1      x      1      2
# 2      x      1      2
# 3      x      1      2

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2013-06-10
    相关资源
    最近更新 更多