我有一个不同长度的字符向量列表,其中包含标识符(例如“011”或“12”)、指示金额的数字(“112.3”或“490.5”)和年份(“2011”或“2020")、空元素 ("") 和仅包含点 (".") 的元素。我想删除仅包含点或空的字符向量元素。标识符的前导零很重要,因此我无法将类型更改为数字。
此原始数据
l <- list(c("2015","2016"),c(""),c("."), c("0","2418.9","292.4"),c("2",".",".","2394.6"),c("011","","934.0","1200.7"))
应该看起来像这样:
l_final <- list(c("2015","2016"),c("0","2418.9","292.4"),c("2","2394.6"),c("011","934.0","1200.7"))
我的想法是创建一个包含 TRUE/FALSE 的列表,指示每个向量要保留哪些元素,但现在我真的陷入困境,因为以下方法不起作用(它返回零整数):
test <- lapply(list, function(i) {unlist(lapply(list[i], function(b) which(b==".")))})
关于“.”的表达式,我已经尝试过其他正则表达式,例如“\.”和“[.]”。
最佳答案
我们可以循环列表
,对不是.
或""
和Filter
的元素进行子集化取出空列表元素
Filter(length, lapply(list, function(x) x[! x %in% c(".", "")]))
-输出
[[1]]
[1] "2015" "2016"
[[2]]
[1] "0" "2418.9" "292.4"
[[3]]
[1] "2" "2394.6"
关于r - 寻找替换列表中字符向量元素的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75150690/