r - 将列表作为新行值插入 1 列,同时复制其他列

标签 r data.table rows

如果我有一个数据表:

d <- data.table(NUM = c(1, 2, 3),
               CLASS = c(1, 1, 1),
               VAR = c(4, 5, 3))

还有一个向量 a <- c(7, 9, 10) .
我将如何添加矢量 a将 1 个值放入列 CLASS 的新行中, 同时从 NUM 中获取第一个值和 VAR并把它拿下来?

预期输出:

    NUM    CLASS    VAR
1      1       1      4
2      2       1      5
3      3       1      3
4      1       7      4
5      1       9      4
6      1      10      4

我想找到一种简化的方法来为除 CLASS 之外的所有列记下第一个值。 .也许用 rbindlist

最佳答案

是的,rbind/rbindlist 有效:

rbind(
  d, 
  d[1, replace(as.list(.SD), names(.SD) == "CLASS", list(a))]
)

   NUM CLASS VAR
1:   1     1   4
2:   2     1   5
3:   3     1   3
4:   1     7   4
5:   1     9   4
6:   1    10   4

或者更一般地说,如果有其他等长的替换...

rr = list(CLASS = a, VAR = 1:3)
rbind(
  d, 
  d[1, replace(as.list(.SD), match(names(rr), names(.SD)), rr)]
)

   NUM CLASS VAR
1:   1     1   4
2:   2     1   5
3:   3     1   3
4:   1     7   1
5:   1     9   2
6:   1    10   3

关于r - 将列表作为新行值插入 1 列,同时复制其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51562136/

相关文章:

r - 更快地计算每个时间步内所有个体之间的距离

r - 合并并从R中的两个不同数据表中获取最大值

R:如何删除data.table中的列?

r - 在 data.table 中创建新列时如何引用整行?

twitter-bootstrap - 带有跨度包装的 Twitter Bootstrap 行

mysql - 将Excel数据矩阵导入MySQL数据库

r - 如何识别 R 中所有列具有相同值的行号?

php - lattice levelplot 仅在 RApache 下失败

r - 使用 `by` 子句时在 data.table 中调度 S3 方法

R Postgres 和快捷命令?