2016-04-20 81 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语法的术语是一个匿名函数的正式参数。 –

相关问题