[英]R: Removing blanks from the list
我想知道是否有任何方法可以从列表中删除空白。 据我搜索,我发现有很多关于从列表中删除整个元素的问答,但是找不到与该元素的特定组成部分有关的问答。
具体来说,我现在正在使用的列表如下所示:
[[1]]
[1] "1" "" "" "2" "" "" "3"
[[2]]
[1] "weak"
[[3]]
[1] "22" "33"
[[4]]
[1] "44" "34p" "45"
从上方可以找到“”,应将其删除。 我尝试了不同的命令,例如
text.words.bl <- text.words.ll[-which(text.words.ll==" ")]
text.words.bl <- text.words.ll[!sapply(text.words.ll, is.null)]
等等,但似乎列表[[1]]中的“”仍然保留。
不可能对列表的每个元素中的小块应用命令吗? (例如1、2,弱,22、33 ...)
我已经使用“ lapply”功能对每个元素运行特定的命令,而且看起来这些lapply命令都可以正常工作。
Y
使用%in%
,但用否定它!
:
## Sample data:
L <- list(c(1, 2, "", "", 4), c(1, "", "", 2), c("", "", 3))
L
# [[1]]
# [1] "1" "2" "" "" "4"
#
# [[2]]
# [1] "1" "" "" "2"
#
# [[3]]
# [1] "" "" "3"
更换:
lapply(L, function(x) x[!x %in% ""])
# [[1]]
# [1] "1" "2" "4"
#
# [[2]]
# [1] "1" "2"
#
# [[3]]
# [1] "3"
显然,如果要覆盖原始数据集,请将输出分配给“ L”:
L[] <- lapply(L, function(x) x[!x %in% ""])
另一种方法是使用nchar()
。 我从@Ananda Mahto借来了L
lapply(L, function(x) x[nchar(x) >= 1])
#[[1]]
#[1] "1" "2" "4"
#
#[[2]]
#[1] "1" "2"
#
#[[3]]
#[1] "3"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.