有没有办法确定引入NAs的位置?

时间:2015-04-17 03:44:03

标签: r comma gsub na coercion

最近浏览了我相当大的数据集并意识到有些foo决定使用逗号。试图将它全部转换为数字。用一个漂亮的小gsub来摆脱那些讨厌的逗号,但我仍然发现强制引入的NAs。有没有办法按列和行标识位置,这些NA正在引入,所以我可以看到为什么会发生这种情况?

谢谢!

2 个答案:

答案 0 :(得分:2)

使用is.na()功能。考虑以下数据框,其中包含NA值,例如:

> df <- data.frame(v1=c(1,2,NA,4), v2=c(NA,6,7,8), v3=c(9,NA,NA,12))
> df
  v1 v2 v3
1  1 NA  9
2  2  6 NA
3 NA  7 NA
4  4  8 12

您可以使用is.nasapply来获得以下结果:

> sapply(df, function(x) { c(1:length(x))[is.na(x)] })
$v1
[1] 3

$v2
[1] 1

$v3
[1] 2 3

每列都会返回NA值发生的行。

答案 1 :(得分:1)

我还会使用whicharr.ind=TRUE来获取行/列索引(来自@Tim Biegeleisen帖子的'df')

 which(is.na(df), arr.ind=TRUE)
 #     row col
 #[1,]   3   1
 #[2,]   1   2
 #[3,]   2   3
 #[4,]   3   3