Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R data.table为一组行更新列表类型的列_R_Data.table - Fatal编程技术网

R data.table为一组行更新列表类型的列

R data.table为一组行更新列表类型的列,r,data.table,R,Data.table,假设我们有以下数据。表: > a <- data.table(id=(1:3), val=vector("list",length(3))) > a$val <- list(c("a","b"),c("c","d","e"),c("f","e")) > a id val 1: 1 a,b 2: 2 c,d,e 3: 3 f,e 用这样的东西怎么能做到这一点 a[id %in% c(2,3), ..] ? 感谢您使用Lappy的想法!我修改

假设我们有以下数据。表:

> a <- data.table(id=(1:3), val=vector("list",length(3)))
> a$val <- list(c("a","b"),c("c","d","e"),c("f","e"))
> a
   id   val
1:  1   a,b
2:  2 c,d,e
3:  3   f,e
用这样的东西怎么能做到这一点

a[id %in% c(2,3), ..] ?

感谢您使用Lappy的想法!我修改了您的第二个解决方案,以通过引用使用赋值:
a[id%在%c(1,2)中,val:=lappy(val,函数(x)x[x!=“e]”)]
您想把它包括在您的答案中吗?太棒了。再次感谢!感谢您使用Lappy的想法!我修改了您的第二个解决方案,以通过引用使用赋值:
a[id%在%c(1,2)中,val:=lappy(val,函数(x)x[x!=“e]”)]
您想把它包括在您的答案中吗?太棒了。再次感谢!
a[id %in% c(2,3), ..] ?
function_remove<-function(x,y){
  if (y %in% c(2,3)){
    x<-x[[1]]
    list(x[x!="e"])
  } else{
    x
  }
}

a[,list(function_remove(val,id)),by=1:nrow(a)]
   nrow  V1
1:    1 a,b
2:    2 c,d
3:    3   f
function_remove_1<-function(x){
  x[x!="e"]
}
a[id %in% c(2,3),]$val<-lapply(a[id %in% c(2,3),val],function_remove_1)
a[id %in% c(1,2), val := lapply(val, function(x) x[x!="e"])]