pom*_*ber 3 r vector data.table
我有这个:
dt = data.table(index=c(1,2), items=list(c(1,2,3),c(4,5)))
# index items
#1: 1 1,2,3
#2: 2 4,5
Run Code Online (Sandbox Code Playgroud)
我想改变dt[index==2,items]到c(6,7).
我试过了:
dt[index==2, items] = c(6,7)
dt[index==2, items := c(6,7)]
Run Code Online (Sandbox Code Playgroud)
一种解决方法是使用ifelse:
dt[,items:=ifelse(index==2,list(c(6,7)),items)]
index items
1: 1 1,2,3
2: 2 6,7
Run Code Online (Sandbox Code Playgroud)
dt[index==2,items := list(list(c(6,7)))]
Run Code Online (Sandbox Code Playgroud)
实际上,您还需要一个列表,因为data.table用于list(.)查找通过引用分配给列的值.
有两种方法可以使用:=运算符data.table:
LHS:= RHS形式:
DT[, c("col1", "col2", ..) := list(val1, val2, ...)]
Run Code Online (Sandbox Code Playgroud)
它对list()RHS 进行了论证.要添加列表列,您需要使用另一个列表进行换行(如上所示).
功能形式:
DT[, `:=`(col1 = val1, ## some comments
col2 = val2, ## some more comments
...)]
Run Code Online (Sandbox Code Playgroud)
添加一些注释和赋值特别有用.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |