2017-02-01 62 views
0

我想查看data.frame列是否有任何空值移動到下一個循環。我目前使用下面的代碼:r - 檢查data.frame列中的任何值是否爲空

if (is.na(df[,relevant_column]) == TRUE){next} 

其吐出警告:

在如果(is.na(df_cell_client [,分子])== TRUE){...:對 條件具有長度> 1,只有第一個元素將被用於

如何檢查是否有任何值爲null,而不僅僅是第一行?

+2

使用'if(any(is.na(df [,relevant_column]))){next }'。沒有'any','is.na(...)'返回一個* vector *的邏輯,但是'if'需要一個比較; 「任何」可以將其減少到單個邏輯。 '== TRUE'是不必要的。 – r2evans

+0

@ r2evans,謝謝它的工作!如果您發佈答案,我會選擇它。 –

回答

2

(我假設由「空」你真的是NA,因爲data.frame不能包含NULL在這個意義上。)

您的問題是if需要一個單一的邏輯,但is.na(df[,relevant_column])返回一個矢量邏輯的any降低邏輯值的向量成一個單一的全局「或」載體: 嘗試:

if (any(is.na(df[,relevant_column]))) {next} 

順便說一句:== TRUE是不必要的。保持它,如果你覺得你想要清晰的代碼,但我認爲你會發現大多數R代碼不使用它。 (我也看過something == FALSE,同樣是「奇怪/錯誤」,其中! something應該可以工作......但是我會離題)