2014-01-20 52 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設計。