我有一个包含5列和> 100k行的表
col1 col2 col3 col4 col5
foo bar
foo1 bar1 this1 that1 other1
foo2 bar2 that2 other2
我想在此表中阅读,以便空白
我尝试了a=read.table("a.txt",header=F,sep='\t',na.strings=c("NA","NULL"))
,但发现NA
只出现在整数列中,而不是字符串。我一直试图对结果表进行子集化以删除具有空白的列,但尚未成功。
我试过了:
subset(a,a$V4!= ' ')
subset(a,a$V4!= '\t')
subset(a,a$V4!= '\w')
subset(a,a$V4!= '\s')
subset(a,a$V4==NULL)
subset(a,a$V4==is.na)
一切都无济于事。
我很感激任何建议
答案 0 :(得分:0)
在@adibender所说的基础上,你可能在这些空白字段中有一些未知数量的空白字符。包含c('', ' ')
可能会解决某些字段,但如果空白字符的数量不同,您仍然会有一些空白。
R在subset(a,a$V4!= '\s')
中的上述比较中不使用正则表达式。您可以使用grepl
进行正则表达式比较并获得逻辑答案,例如: a[!grepl('[[:space:]]', a$V4), ]
(返回a
中a$V4
未找到空格字符的行。
如果要删除空格并替换为NA(假设没有空格有效),我可能会使用gsub
中的str_trim
或stringr
,然后使用ifelse(a$V4 == '', NA, a$V4)
从空字符串更改为NA
。