gpt4 book ai didi

r - 如何按行更新 R data.table 的所有列?

转载 作者:行者123 更新时间:2023-12-02 06:56:14 25 4
gpt4 key购买 nike

我正在尝试通过从其他 data.tables 中获取片段并将它们组合来创建 data.table 对象。这是一个简单的例子:

a <- data.frame(x=1:30)
b <- data.frame(x=10:39)
c <- data.frame(x=20:49)

d <- data.frame(x=50:79)
e <- data.frame(x=60:89)
f <- data.frame(x=70:99)

DT <- data.table(matrix(ncol = 3, nrow = 30))
for (i in seq.int(from = 1, to = 30, by = 3)) {
set(DT,i,.SD,cbind(a[i,],b[i,],c[i,]))
set(DT,(i+1),.SD,cbind(d[i,],e[i,],f[i,]))
set(DT,(i+2),.SD,"")
}

但是这不起作用。我哪里做错了?谁能推荐一种更好的方法来实现这种效果?我总是觉得在 R 中这样循环有点不安。

所需的输出应该是这样的:(显示前几行)

     x  x  x
1: 1 10 20
2: 50 60 70
3:
4: 2 11 21
5: 51 61 71
6:
7: 3 12 22
8: 52 62 72
9:
10: 4 13 23

最佳答案

基于@TimBiegeleisen 的回答,由于某种原因被删除:

library(data.table)
pt1 <- data.table(a,b,c)
pt2 <- data.table(d,e,f)
out <- rbind(pt1,pt2)
out[c(rbind(matrix(seq(1,nrow(out)),byrow=TRUE,nrow=2),NA))]

上面out的行索引是这样的:1 31 NA 2 32 NA 3 33 NA,所以它抓取每组数据的第一行并把它们一起。 NA 索引导致一行的所有 NA

#     x  x  x
# 1: 1 10 20
# 2: 50 60 70
# 3: NA NA NA
# 4: 2 11 21
# 5: 51 61 71
# 6: NA NA NA
# 7: 3 12 22
# 8: 52 62 72
# 9: NA NA NA
#10: 4 13 23
#...

关于r - 如何按行更新 R data.table 的所有列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com