R 通过引用写入data.table的某些行

R 通过引用写入data.table的某些行,r,data.table,R,Data.table,我试图通过引用写入data.table的行子集,以便处理模型的训练、测试和排除的数据行 但是,当我定义这个行子集并尝试写入它时,它会在没有警告的情况下中断引用。从概念上讲,我知道这是可行的: library('data.table') a <- data.table(a1=c(0,1), a2=c(2,3)) a # a1 a2 # 1: 0 2 # 2: 1 3 b <- a b[,b1:=4] b # a1 a2 b1 # 1: 0 2 4 # 2

我试图通过引用写入data.table的行子集,以便处理模型的训练、测试和排除的数据行

但是,当我定义这个行子集并尝试写入它时,它会在没有警告的情况下中断引用。从概念上讲,我知道这是可行的:

library('data.table')

a <- data.table(a1=c(0,1), a2=c(2,3))
a
#    a1 a2
# 1:  0  2
# 2:  1  3

b <- a

b[,b1:=4]
b
#    a1 a2 b1
# 1:  0  2  4
# 2:  1  3  4

a
#    a1 a2 b1
# 1:  0  2  4
# 2:  1  3  4
library('data.table'))

a我不确定我是否误解了,但你只是想要
a[1,b1:=4]
?@我试图了解的最近一封邮件,如果我能通过使用
b
,通过引用达到与
a[1,b1:=4]
相同的结果。我更愿意在
b
上工作,因为(在现实生活中)获取
b
的行比只获取
a[1,]
要复杂得多,我只需要为
createDataPartition
对所选行进行索引,然后将一些内容写回原始的data.table,但使用该索引。您应该能够对
b
进行操作,并得到相同的结果,例如
a@thelatemail谢谢您的时间。我现在所做的基本上就是你所建议的--
a[1,b1:=4]
--但是每次我想写入data.table时,我都必须跟踪这些索引。我很好奇是否可以通过创建一个新的data.table
b
来一次性定义索引,只指向那些行,并且仍然能够写回原始数据的相应行。如果没有,我就没有必要创建数据表。
b.
有趣的是,你链接了那篇文章,但没有按照答案中的步骤操作。在执行
b之后
a <- data.table(a1=c(0,1), a2=c(2,3))
a
b <- a[1,]
b
#    a1 a2
# 1:  0  2

b[,b1:=4]
b
#    a1 a2 b1
# 1:  0  2  4
a
#    a1 a2
# 1:  0  2
# 2:  1  3

# What I would really like is
#>a
#    a1 a2 b1
# 1:  0  2  4
# 2:  1  3 NA