2014-01-20 51 views
0

第一个谜团是为什么空单元格的csv文件中的字符向量不包含NA。相反,它们显示为“”。尝试过read.csv(file, na.strings = ""),但失败。RHS替换缺失值的R函数错误

无论如何,问题是为什么这个函数返回一个错误,而它在函数外部工作。

clean.data <- function(dta, col) { 
    dta$col[dta$col == ""] <- NA # set empty cells to missing 
} 

有些明显的错误,但我看不到它。

Error in `$<-.data.frame`(`*tmp*`, "col", value = logical(0)) : 
    replacement has 0 rows, data has 20692 
+0

使用'dta [dta [,col] ==“”,col] < - NA' – Roland

+0

为什么?它工作,顺便说一句。 – Rico

+0

因为'$'不适用于像这样的编程使用。您不能将它传递给列选择的字符。 – Roland

回答

0

要回答你的第一个问题:''是不一样的NA。后者在R中具有特定含义;它是一种特定类型的非定义虚无。例如:

> 'foo'=='' 
[1] FALSE 
> 'foo'==NA 
[1] NA 

您可以在''执行逻辑等操作,但几乎所有的操作,涉及NA回报NA设计。