簡體   English   中英

將多個列添加到data.table的子集中:=

[英]add multiple columns to subset of data.table with :=

我的問題是對此前回答的問題的擴展:

在一個函數調用中向R data.table添加多個列?

如果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個新列new1new2 ,類似於上面的解決方案。 我這樣做:

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

很好地發現:這是一個新的錯誤。 請提交bug.report(package="data.table")

謝謝。

===

現已修復於v1.8.3。 Bug#2215最新消息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM