我有一个嵌套框架,我根据嵌套框架中的一个分类变量将其分成一个嵌套框架列表:

list <- split(mpg, mpg$manufacturer)

我希望过滤列表以仅包括每个数据帧中的一个分类列包含至少5个唯一因素的数据帧,并删除那些小于5的列. 我try 了lApply和Filter对数据集进行过滤,但结果是过滤每个数据帧,而不是整个列表,以及: filteredlist <- lapply(list, function(x) length(unique(x$class) >= 5))个 我被难住了.

谢谢,任何帮助都将不胜感激!

推荐答案

首先,让我们来看看有多少个独特的类:

sapply(list, \(x) length(unique(x$class)))
   #    audi  chevrolet      dodge       ford      honda    hyundai       jeep land rover    lincoln 
   #       2          3          3          3          1          2          1          1          1 
   # mercury     nissan    pontiac     subaru     toyota volkswagen 
   #       1          3          1          3          4          3 

因此,有了这个数据,>= 5不是一个很好的例子,因为它将得到0个结果.让我们做>= 3,这样我们就可以期待一个非空的结果.

## with Filter
filteredlist <- Filter(list, f = function(x) length(unique(x$class)) >= 3)
length(filteredlist)
# [1] 7

## or with sapply and `[`
sapply_filter = list[sapply(list, \(x) length(unique(x$class))) >= 3]
length(sapply_filter)
# [1] 7

请注意,在您try lapply(list, function(x) length(unique(x$class) >= 5))中,您有一个括号输入错误,您需要length(unique()) >= 5)而不是length(unique(...) >= 5))

R相关问答推荐

R Tidymodels textercipes-使用spacyR进行标记化-如何从生成的标记列表中删除标点符号

次级y轴R gggplot2

如何在R中合并和合并多个rabrame?

手动打印线型gplot

从R导出全局环境中的所有sf(numrames)对象

R函数‘paste`正在颠倒其参数的顺序

R函数,用于生成伪随机二进制序列,其中同一数字在一行中不出现超过两次

根据列A中的差异变异列,其中行由列B中的相对值标识

plotly hover文本/工具提示在shiny 中不起作用

R中的哈密顿滤波

ComplexHEAT:使用COLUMN_SPLIT时忽略COLUMN_ORDER

如何移除GGPlot中超出与面相交的任何格网像元

按组跨多列创建伪变量

通过R:文件名未正确写入[已解决]将.nc文件转换和导出为.tif文件

R-使用stri_trans_General()将其音译为德语字母

R将函数参数传递给ggploy

附加中缀操作符

以R表示的NaN值的IS.NA状态

将边列表转换为路径长度列表

根据列和行的不同组合 Select 各种单元格