gpt4 book ai didi

从函数 R 中的列表列表中删除 NA

转载 作者:行者123 更新时间:2023-12-02 07:17:22 25 4
gpt4 key购买 nike

我有一个函数,它将整数的嵌套列表(或列表列表)作为输入,并根据某个概率 p1 随机分配 NA 的值。我想扩展此功能以从列表中删除 NA。

我知道删除 NA 是互联网上的一个常见问题,并且已经查看了 Stack Overflow 和其他地方的问题,但没有一个解决方案有效。一般来说,提出的问题并不涉及实际的列表。

我试过了:

#Example data
d<-list(1,3,c(0,NA,0),c(0,0))
e<-list(1,6,c(0,3,NA,0,NA,0),c(0,NA,0,1,0,0),1,NA,c(0,0))
f<-list(1,0)
L.miss<-list(d,e,f)

#Tests
test1<-lapply(L.miss,function(x) x[!is.na(x)]) #Doesnt work
test2<-lapply(L.miss,Filter,f=Negate(is.na)) #Doesnt work
test3<-lapply(L.miss,na.omit) #Doesnt work

下面是我用来分配 NA 值的函数(另外,如果它笨拙,请不要笑,我可能不像你那样有编码经验!)。我还添加了将生成长度为 3 的列表示例列表的代码,其中嵌套了各种长度的列表,类似于我的实际数据输入(尽管长度为 2000)。

imperfect.passive<-function(z,p1){
z.imp<-z
obs.surv<-integer()
for (i in 1:length(z)){
for (j in 1:length(z[[i]])){
for (k in 1:length(z[[i]][[j]])){
for (l in 1:length(z[[i]][[j]][[k]])){
obs.surv[l]<-rbinom(1,1,p1)
if (obs.surv[l]==0){
z.imp[[i]][[j]][[k]]<-NA
}
}
#######################################
##'@TODO -> Remove NA values from list
#######################################
}
}
}
return(z.imp)
}
#####for small example
a<-list(1,3,c(0,2,0),c(0,0))
b<-list(1,6,c(0,3,2,0,1,0),c(0,0,0,1,0,0),1,2,c(0,0))
c<-list(1,0)
L.full<-list(a,b,c)

#assign NA with p=0.5
example<-imperfect.passive(L.full,0.5)

任何建议都将不胜感激,如果在其他地方得到回答,我深表歉意 - 我找不到它。

最佳答案

使用rapply:

rapply(L.miss, na.omit, how = "replace")

关于从函数 R 中的列表列表中删除 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58937886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com