R 如果嵌套列表中至少有一个值不是NA,则替换嵌套列表中的NA
我有两个相同嵌套列表(或列表列表)的版本。嵌套列表中的每个列表包含不同数量的向量(向量仅包含整数)R 如果嵌套列表中至少有一个值不是NA,则替换嵌套列表中的NA,r,R,我有两个相同嵌套列表(或列表列表)的版本。嵌套列表中的每个列表包含不同数量的向量(向量仅包含整数) 包含列表中所有数据的“完整”版本 “缺失”版本-与完整版本相同,但部分整数随机替换为NA 一些示例数据: #complete list L.full<-list(list(1,3,c(0,2,0),c(0,0)),list(1,6,c(0,3,2,0,1,0),c(0,0,0,1,0,0),1,2,c(0,1),2,c(0,0)), list(1,0),list(1,0),li
- 包含列表中所有数据的“完整”版本
- “缺失”版本-与完整版本相同,但部分整数随机替换为NA
#complete list
L.full<-list(list(1,3,c(0,2,0),c(0,0)),list(1,6,c(0,3,2,0,1,0),c(0,0,0,1,0,0),1,2,c(0,1),2,c(0,0)),
list(1,0),list(1,0),list(1,4,c(2,0,0,0),c(4,1),c(1,0,0,0,0),0))
#"randomly" allocated NAs
L.miss<-list(list(1,3,c(0,NA,0),c(0,0)),list(1,6,c(0,3,NA,0,NA,0),c(0,NA,0,1,0,0),1,NA,c(0,1),2,c(0,0)),
list(NA,NA),list(1,0),list(1,NA,c(NA,0,0,0),c(NA,NA),c(1,0,0,NA,0),0))
这将重新指定原始值,但不加区分。我不确定如何(或在何处)添加这样的功能:首先评估所有NA
值的嵌套列表,然后如果不是所有NA
s,则运行“第二次机会”概率。非常感谢您的建议 过程:
x<-sapply(L.miss, function(x) all(is.na(unlist(x))))
x<-sapply(L.miss, function(x) all(is.na(unlist(x))))
temp<-rbind(L.miss,sapply(z.pass, function(x) all(is.na(unlist(x)))))
for (i in 1:length(L.miss)){
if (temp[[i*2]]==TRUE){
L.want[i]<-L.miss[i]
}
else{
for (j in 1:length(L.miss[[i]])){
for (k in 1:length(L.miss[[i]][[j]])){
for (l in 1:length(L.miss[[i]][[j]][[k]])){
#See if the individual position in the nested list is an NA value
if (is.na(L.miss[[i]][[j]][[k]])){
if(runif(1)<p2){ #Stochastic process to determine if it should proceed
L.want[[i]][[j]][[k]]<-L.full[[i]][[j]][[k]] #reassign original value
}}}}}}}