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"])]