【发布时间】:2022-10-15 15:50:51
【问题描述】:
我有一个列表,我可以根据模式的存在从中删除元素(请参阅this 帖子)。
lst <- list(a = 1:4, b = 4:8, c = 8:10)
pattern <- "a|c"
lstnew <- lst[-grep(pattern, names(lst))]
上面的代码从列表中删除元素 a 和 c。伟大的。有时虽然我在列表中没有匹配的模式。然后我希望它返回完整列表。如果我使用上面的代码,它会返回一个空的命名列表。
pattern <- "d|e"
lstnew <- lst[-grep(pattern, names(lst))]
lstnew
named list()
似乎 ifelse() 是实现此目的的合乎逻辑的选择,即如果模式在列表中匹配,则从列表中删除元素,否则返回完整列表。有什么建议么?
【问题讨论】:
-
无法重现。第二个示例删除元素“c”并返回元素“a”和“b”。
-
对不起,现在修好了!