2016-04-20 80 views
-2

我有一個大型數據框,每行包含900個變量。我正在嘗試編寫一個函數,該函數給出了每行包含NA的每個列的名稱。在R中包含NAs的列名稱

例如:

x-> 

       mpg cyl disp hp draw wt 
Mazda RX4  21.0 6 160 110 NA 2.62 
Mazda RX4 Wag 21.0 6 NA 110 3.90 NA 
Datsun 710 22.8 4 NA 93 NA NA 

我想一個函數返回:由行

Mazda RX4: "draw" 
Mazda RX4 Wag: "disp", "wt" 
Datsun 710: "disp","draw","wt" 

回答

1

運行applycolnames(x)選擇。因爲結果很糟糕,可能會列出清單。

apply(x, 1, function(x2) colnames(x)[ is.na(x2) ]) 
$`Mazda RX4` 
[1] "draw" 

$`Mazda RX4 Wag` 
[1] "disp" "wt" 

$`Datsun 710` 
[1] "disp" "draw" "wt" 
+0

哇,非常感謝!我是R新手,非常感謝他的幫助。我唯一的問題是x2會被定義爲什麼? –

+1

'x2'是一個臨時值,它會隨着'apply'逐行移動而變化,並且在函數完成後,'x2'將可用於垃圾收集。從技術上講,描述R語法的術語是一個匿名函數的正式參數。 –

相關問題