使用data.table';s fread具有不同长度的空白缺失值

使用data.table';s fread具有不同长度的空白缺失值,r,data.table,R,Data.table,我有一个缺少很多值的数据集。缺少的值中有一些是NAs,一些是NULL,还有一些具有不同长度的空格。我想利用R中的fread功能来读取缺失的所有这些值 以下是一个例子: #Find fake data iris <- data.table(iris)[1:5] #Add missing values non-uniformly iris[1,Species:=' '] iris[2,Species:=' '] iris[3,Species:='NULL'] #Write

我有一个缺少很多值的数据集。缺少的值中有一些是NAs,一些是NULL,还有一些具有不同长度的空格。我想利用
R
中的
fread
功能来读取缺失的所有这些值

以下是一个例子:

#Find fake data
iris <- data.table(iris)[1:5]

#Add missing values non-uniformly
iris[1,Species:='         ']
iris[2,Species:=' ']
iris[3,Species:='NULL']

#Write to csv and read back in using fread
write.csv(iris,file="iris.csv")
fread("iris.csv",na.strings=c("NULL"," "))

   V1 Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1:  1          5.1         3.5          1.4         0.2          
2:  2          4.9         3.0          1.4         0.2        NA
3:  3          4.7         3.2          1.3         0.2        NA
4:  4          4.6         3.1          1.5         0.2    setosa
5:  5          5.0         3.6          1.4         0.2    setosa
#查找假数据

iris非常感谢@eddi的精彩回答

fread("sed 's/ *//g' iris.csv",na.strings=c("",NA,"NULL"))

要么添加所有可能的空格长度,要么在读入后将其设置为
NA
?我目前正在使用
mclappy(数据,函数(x)ifelse(str_trim(x)='',NA,toupper(str_trim(x)),mc.cores=10)
来转换所有内容,但速度不是很快。我想我可以用
paste
rep
来考虑所有可能的空格,这是Linux(Ubuntu)上的
fread(“sed's/*//g'yourfile”)
或一些正则表达式的变体,根据您的数据的具体外观可能是1.8.11-请升级到至少1.9.2并重试