加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

更新data.table中的向量

发布时间:2020-12-15 04:24:31 所属栏目:Java 来源:网络整理
导读:参见英文答案 Using lists inside data.table columns????????????????????????????????????2个 我有这个: dt = data.table(index=c(1,2),items=list(c(1,2,3),c(4,5)))# index items#1: 1 1,3#2: 2 4,5 我想将dt [index == 2,items]更改为c(6,7). 我试过了
参见英文答案 > Using lists inside data.table columns????????????????????????????????????2个
我有这个:

dt = data.table(index=c(1,2),items=list(c(1,2,3),c(4,5)))
#   index items
#1:     1 1,3
#2:     2   4,5

我想将dt [index == 2,items]更改为c(6,7).

我试过了:

dt[index==2,items] = c(6,7)
dt[index==2,items := c(6,7)]

解决方法

一个解决方法是使用ifelse:

dt[,items:=ifelse(index==2,list(c(6,7)),items)]

   index items
1:     1 1,3
2:     2   6,7

编辑正确的答案:

dt[index==2,items :=  list(list(c(6,7)))]

实际上,您还需要一个列表,因为data.table使用list(.)来查找通过引用分配给列的值.

有两种方法可以在data.table中使用:=运算符:

> LHS:= RHS表格:

DT[,c("col1","col2",..) := list(val1,val2,...)]

它需要RHS上的list()参数.要添加列表列,您需要使用另一个列表进行换行(如上所示).
>功能形式:

DT[,`:=`(col1 = val1,## some comments
          col2 = val2,## some more comments
          ...)]

添加一些注释和赋值特别有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读