如何设计一个r函数,从列表列表中选择特定元素,并返回一个数据帧作为输出

问题描述 投票:0回答:1

我正在尝试设置一个r函数,它将从列表中选择相关元素,最后以数据帧作为输出。

这是我正在使用的列表:

test_list<-list(set1=list(2, NA, NA, 8, NA, NA, 2), set2=list(4, 6, NA, NA, 2, 1, 1), set3=c(2, 3, 2, 1, NA, NA, NA))

对于列表中的每个元素,我只想保留包含少于4个NA元素的子列表。

这是我建立的功能:

is.useful <-function(x){ #x is a list of sublists 
#I want to keep only the sublists with less than 4 NA elements
    vector <-c()
    for(i in x){
        if(sum(is.na(x[[i]])) <= 3){
        vector <-c(vector, unlist(x[[i]]))
        }
        }
    return (vector)
    }

运行qazxsw opi,我在x [[i]]中得到错误:输入'list'

我不明白这里的问题是因为:is.useful(test_list)返回正确的答案4,sum(is.na(test_list[["set1"]]))也给了我作为向量的子列表(unlist(test_list[["set1"]])返回TRUE)

我还尝试了其他的东西,即使用以下命令将列表列表转换为数据帧:

is.vector(unlist(test_list[["set1"]]))

从那里,我尝试运行一个非常相似的功能,没有unlist:

dd  <-  as.data.frame(matrix(unlist(test_list), nrow=length(unlist(test_list[1])))) 

is.useful2 <-function(x){ #x is dataframe #I want to keep only the vectors with less than 4 NA elements vector <-c() for(i in x){ if(sum(is.na(x[i])) <= 3){ vector <-c(vector, (x[i])) } } return (vector) } is.useful2(dd)(x,i)中返回错误:选择了未定义的列

我期待什么?在这个具体的例子中,我期望一个2个向量的数据帧,set2和set3,我有少于4个NA值。

我有点迷茫。我做错了什么 ?

非常感谢你的帮助。

r list function loops dataframe
1个回答
2
投票

希望这可以帮助:

[.data.frame
© www.soinside.com 2019 - 2024. All rights reserved.