2

我有一个包含 5 列和 >100k 行的表

col1    col2    col3    col4    col5
foo     bar
foo1    bar1    this1  that1    other1
foo2    bar2           that2    other2

我想在这张表中阅读,以便空白是

  1. 读为 NA,或
  2. 这些行被忽略

我试过了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) 

一切都无济于事。

我会很感激任何建议

4

1 回答 1

0

根据@adibender 所说,您可能在这些空白字段中有一些未知数量的空白字符。包括c('', ' ')可能会解决某些字段,但如果空白字符的数量不同,您仍然会有一些空白。

R 不会像上面那样在比较中使用正则表达式subset(a,a$V4!= '\s')。您可以使用grepl进行正则表达式比较并返回一个合乎逻辑的答案,例如a[!grepl('[[:space:]]', a$V4), ](返回a未在 中找到空白字符的行a$V4)。

如果要删除空格并替换为 NA (假设没有空格是有效的),我可能会使用gsubor str_trimfromstringr然后ifelse(a$V4 == '', NA, a$V4)从空字符串更改为NA.

于 2015-02-20T15:28:24.303 回答