如果我有一个数据表:
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/