R 如何将数据类型和数据结构混合的列表子集?

R 如何将数据类型和数据结构混合的列表子集?,r,R,我有一个列表,其中包括数据类型(字符)和数据结构(数据帧)的混合 我只想保留数据帧,并删除其余的数据帧 > head(list) [[1]] [1] "/Users/Jane/R/12498798.txt error" [[2]]

我有一个列表,其中包括数据类型(字符)和数据结构(数据帧)的混合

我只想保留数据帧,并删除其余的数据帧

> head(list)

[[1]]
[1] "/Users/Jane/R/12498798.txt error"

[[2]]
                                                                                                                                            match
1  Japan arrests man for taking gun
2                                                                                                              Extradition bill turns ugly
                                                     file
1 /Users/Jane/R/12498770.txt
2 /Users/Jane/R/12498770.txt

[[3]]
[1] "/Users/Jane/R/12498780.txt error"

我希望最终列表只包含数据帧:

[[2]]
                                                                                                                                            match
1  Japan arrests man for taking gun
2                                                                                                              Extradition bill turns ugly
                                                     file
1 /Users/Jane/R/12498770.txt
2 /Users/Jane/R/12498770.txt

基于该示例,OP的
列表
元素可能是
向量
,并且想要删除
任何具有“error”子字符串的
元素

list[!sapply(list, function(x) any(grepl("error$", x)))]

基于该示例,OP的
列表
元素可能是
向量
,并且想要删除
任何具有“error”子字符串的
元素

list[!sapply(list, function(x) any(grepl("error$", x)))]

尝试
list[sapply(list,inherits,“data.frame”)]
。或者,更简单的,
list[sappy(list,is.data.frame)]
@ruibradas我尝试过使用它,但它显示了错误
列表[sappy(results,is.data.frame)]:类型为“builtin”的对象不可子集
否,在这个问题中,对象名为
list
,而不是
结果
。如果是后者,请尝试
results[sapply(results,is.data.frame)]
。根据您的示例,预期的输出显示
.txt
链接,而不是
data.frame
。我猜您需要删除有
错误的子字符串。如果是这种情况,
list[!sappy(list,function(x)any(grepl(“error$”,x)))]
尝试
list[sappy(list,inherits,“data.frame”)]
。或者,更简单的,
list[sappy(list,is.data.frame)]
@ruibradas我尝试过使用它,但它显示了错误
列表[sappy(results,is.data.frame)]:类型为“builtin”的对象不可子集
否,在这个问题中,对象名为
list
,而不是
结果
。如果是后者,请尝试
results[sapply(results,is.data.frame)]
。根据您的示例,预期的输出显示
.txt
链接,而不是
data.frame
。我猜您需要删除有
错误的子字符串。如果是这种情况,
list[!sapply(list,function(x)any(grepl(“error$”,x)))]