[英]add multiple columns to subset of data.table with :=
我的問題是對此前回答的問題的擴展:
如果data.table有一個根據I子集的密鑰,我在分配多個新列時遇到問題。 例:
library(data.table)
example(data.table)
DT[J("a")]
x y v m
1: a 1 42 42
2: a 3 42 42
3: a 6 42 42
即DT有一個key(DT) = c("x", "y")
,我想在一次調用中分配2個新列new1
和new2
,類似於上面的解決方案。 我這樣做:
DT[J("a"),c("new1","new2") := list(c(1,2,3),c(3,2,1)),with=FALSE]
但我明白了
x y v m new1
1: a 1 42 42 1
2: a 3 42 42 2
3: a 6 42 42 3
4: b 1 4 5 NA
5: b 3 5 5 NA
6: b 6 6 5 NA
7: c 1 7 8 NA
8: c 3 8 8 NA
9: c 6 9 8 NA
即行為符合預期(將值賦值給x == a,NA其他),但僅限於第一列。 這是我的錯誤還是錯誤?
請注意,如果沒有DT的子集,這可以完美地工作:
DT[,c("new1","new2") := list(c(1,2,3),c(3,2,1)),with=FALSE]
x y v m new1 new2
1: a 1 42 42 1 3
2: a 3 42 42 2 2
3: a 6 42 42 3 1
4: b 1 4 5 1 3
5: b 3 5 5 2 2
6: b 6 6 5 3 1
7: c 1 7 8 1 3
8: c 3 8 8 2 2
9: c 6 9 8 3 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.