从列表中删除R中包含过多字符的元素

从列表中删除R中包含过多字符的元素,r,list,character,R,List,Character,我试图找到一种方法,从满足特定要求的列表中删除元素。我想删除列表中少于30个字符的所有元素,例如元素[[2]]、[[3]]、[[5]]]等。您可以在下图中看到列表本身的屏幕截图: 我尝试过使用nchar函数,但我不知道如何在列表中的每个元素上循环它 您可以使用sapply对列表的每个元素应用nchar,然后对结果使用直接索引 vec 10] # [[1]] #[1]“你好,世界” # [[2]] #[1]“这是一个更长的字符串” 或者更好(我忘记了nchar也在lists上运行),正如GKi

我试图找到一种方法,从满足特定要求的列表中删除元素。我想删除列表中少于30个字符的所有元素,例如元素
[[2]]、[[3]]、[[5]]]
等。您可以在下图中看到列表本身的屏幕截图:


我尝试过使用
nchar
函数,但我不知道如何在列表中的每个元素上循环它

您可以使用
sapply
对列表的每个元素应用
nchar
,然后对结果使用直接索引

vec 10]
# [[1]]
#[1]“你好,世界”
# [[2]]
#[1]“这是一个更长的字符串”
或者更好(我忘记了
nchar
也在
list
s上运行),正如GKi所建议的:

vec[nchar(vec)>10]
另一种选择是使用
过滤器
,尽管这可能是过度设计的

过滤器(功能(a)nchar(a)>10,vec)
# [[1]]
#[1]“你好,世界”
# [[2]]
#[1]“这是一个更长的字符串”

带有
purr中保留
的选项

library(purrr)
keep(vec, ~ nchar(.x) > 10)
数据
vec请不要发布代码/数据/错误的图像:它无法复制或搜索(SEO),它会破坏屏幕阅读器,并且可能不适合某些移动设备。参考:(和)。请直接包括代码、控制台输出或数据(例如,
dput(head(x))
data.frame(…)
)。抱歉-这一切都是新的。因为你是新来的,所以在接受答案时,有一些事情需要考虑:(1)在StackExchange网站上,最好的答案是提供给你的,这是一种常见的礼节,如果你喜欢的话,可能会对其中的一个或多个进行投票;这是为了向后续读者表示感谢并将问题标记为已解决;(2) 当问题不是直截了当的,你的怀疑可能会有更多的答案,最好等着接受;如果一个答案已经被接受,人们往往不会提交替代答案。谢谢我既不急也不求积分,只是为Stack站点的新用户提供一些建议。回来或者简单的
vec[nchar(vec)>10]
上帝保佑你的灵魂!我怎么没有看到这么简单的解决方案……是的,我一直忘了
nchar
也适用于列表,而不仅仅是
字符
向量。
vec <- list("hello world", "short", "this is a much longer string")