【发布时间】:2021-07-19 20:24:36
【问题描述】:
我有一个 data.table 并且一列最初是空的(NA 值)。 我想在 NA 列中选择所有具有 NA 值的行,然后选择两个随机样本并用来自循环的索引变量替换它们的 NA 值。 此步骤应重复 3 次。
我的代码似乎无法生成正确的子集,因为已分配的非 NA 值被覆盖。
期望的可能输出:
1 3
2 2
3 NA
4 2
5 NA
6 3
7 1
8 NA
9 1
实际可能的输出(2x3 值应该没有 NA 值):
1 3
2 2
3 NA
4 NA
5 NA
6 3
7 NA
8 NA
9 1
MWE:
d <- data.table(a=c(1,2,3,4,5,6,7,8,9), c=numeric())
col_name <- "c" #
for(chunk in seq(1,3)) {
d[d[is.na(get(col_name)), .I[sample(.N, 2, replace = FALSE)]], toString(col_name) := chunk]
}
为什么这不起作用?
【问题讨论】:
标签: r data.table subset sample