R-删除使用x个以上字符的行

时间:2018-08-08 14:37:54

标签: r row which nchar

我有一个包含7个变量的数据框。有些变量的字符要多于应有的字符。要查找一个值包含太多字符的行,请使用以下代码:

df <- df[-c(which(nchar(as.character(df$u)) > 5)), ]

因此,应该删除df $ u中每行超过5个字符的行。问题在于这种方法会删除所有内容。在这种情况下,df$u中没有超过5个字符的值,因此不应删除任何内容。如果我将上面的行更改为

df <- df[-c(which(nchar(as.character(df$u)) > 4)), ]

删除两行,这是正确的,因为在两次df$u字符超过4个字符的情况下。

问题是我不知道问题出在哪里。它可以很好地处理数百个文件,然后突然停止工作。

df的小代码示例:

station date u v w temp dir
Balc 2017.12.25_0:0:0.005940 0.66 0.81 0.65 2.22 320.8
Balc 2017.12.25_0:0:0.106316 0.34 0.53 0.36 2.22 327.5
Balc 2017.12.25_0:0:0.205374 0.4456786 0.60 0.49 2.20 323.9
Balc 2017.12.25_0:0:0.306819 0.43 0.35 0.82 2.22 309.5

1 个答案:

答案 0 :(得分:1)

问题出在索引上。如果没有超过5个值,则==中的条件将返回所有 FALSE ,而Eq将返回which,并且为此索引的列将不返回任何内容。 尝试使用逻辑:

which