我正在尝试使用 data.table 进行以下巧妙的归因:
for (s in c('G1', 'G2') {
t[t[ , .I[seq(which.max(get(s)), .N)], by = GROUP]$V1, get(s) := 1]
}
出于某种原因,它抱怨发出错误:
Error in get(s) : object 'G1' not found
但是,显式形式很好地工作:
t[t[ , .I[seq(which.max(G1), .N)], by = GROUP]$V1, G1 := 1]
当然,我的真实数据集有很多列,这些列的名称事先是未知的。我在这里做错了什么?
这是一个示例数据集:
G1 G2 GROUP
0.081975988 0.281210522 A
0.726230621 0.91873287 A
0.938997082 0.146669516 A
0.10564305 0.219593442 A
0.112977071 0.451366779 A
0.157260728 0.570366021 A
0.586841571 0.742955139 B
0.418178989 0.584326765 B
0.290443749 0.435277405 B
0.682695255 0.138739152 B
0.992847073 0.198544311 B
0.401170904 0.347155973 B
0.591182359 0.219964292 C
0.003935376 0.231136145 C
0.666710774 0.479126371 C
0.791187106 0.153873696 C
0.921437692 0.31429481 C
0.88193519 0.801150898 C