一次性从R列表中删除多个空字符串

一次性从R列表中删除多个空字符串,r,R,我有一个列表,其中有65k个字符串条目,我想删除那些有空字符串的条目 到目前为止,我已经尝试过: for(i in 1:length(dd)) { if(nchar(dd[[i]])==0) { dd[[i]]<-NULL } } for(1中的i:长度(dd)) { 如果(nchar(dd[[i]])==0) { dd[[i]]您的“空白”元素是否包含多个空格 检查此行为,此向量的第二个元素有4个空格: x <- c('abc', ' ', 'def')

我有一个列表,其中有65k个字符串条目,我想删除那些有空字符串的条目

到目前为止,我已经尝试过:

for(i in 1:length(dd))
{  
 if(nchar(dd[[i]])==0)
 {
   dd[[i]]<-NULL
 }
}
for(1中的i:长度(dd))
{  
如果(nchar(dd[[i]])==0)
{

dd[[i]]您的“空白”元素是否包含多个空格

检查此行为,此向量的第二个元素有4个空格:

x <- c('abc', '    ', 'def')
length(x)
[1] 3

nchar(x)
[1] 3 4 3

nchar(x) == 0
[1] FALSE FALSE FALSE
您应该能够使用这样的方法对整个数据集执行此操作

lapply(data, function(x){ x[nchar(trimws(x)) == 0] <- NA; x })

lapply(数据,函数(x){x[nchar(trimws(x))==0]您应该首先确定条目是否为空字符串,然后生成子集:

is_not_empty_string <- sapply(dd, function(x) {x != ""})
dd_no_empty_strings <- dd[is_not_empty_string]

是否为非空字符串如果dd是包含一些空字符串和一些非空字符串的向量:

> dd = c("abc", "def", "   ", "ghi")  
> dd
[1] "abc" "def" "   " "ghi"
可以通过以下方式删除空字符串:

> dd[trimws(dd) != ""]
[1] "abc" "def" "ghi"

您应该添加代码,将带有空格(空字符串)的x转换为OP要求的不带空格的x。@mso-done。谢谢,我是新加入的,但仍然会犯很多错误:)关于您的编辑(从审阅队列中看到):“以及在问题本身中复制它所需的最短代码”.您没有给出任何数据外观的线索。无法重现您的问题,特别是如果您的“表”是一个包含因素的数据框架,这可能是你的根本问题。因此,这是一个离题的问题,不可能复制。仅供参考,你可以在评论中询问接近投票人的姓名,前面加上@,编辑请求原因不是一种正确的行为。顺便说一句,对已接受答案的编辑清楚地表明了重复性非常重要的原因t、 你让他猜测你的数据实际上是什么样子。@Tensibai好的,注意到了,并对它做了一些修改,但问题不一定与表的类型有关,而是与我给出的代码有关。我在datatable和list中试过了,同样的错误。我们怎么能猜到类型不是问题?这就是给出a,添加b的全部意义取消对数据的锁定可以避免答案猜测根本问题是什么。如果您希望筛选的数据不在数据头中,则使用
dput(head(variable\u of\u your\u data))
并粘贴其输出通常就够了。
> dd = c("abc", "def", "   ", "ghi")  
> dd
[1] "abc" "def" "   " "ghi"
> dd[trimws(dd) != ""]
[1] "abc" "def" "ghi"