[英]R substitute NAs in a matrix
RI中的数据帧具有一些丢失的值,因此read.table()
函数使用NA
而不是空白单元格。
我这样写:
a <- sample(1000:50000000, size=120, replace=TRUE)
values <- matrix(a, nrow=6, ncol=20)
mtx <- cbind.data.frame(values, c(rep(NA),6))
mtx <- apply(mtx, 2, function(x){
if (x==NA) sample(100:500, replace=TRUE, size=nrow(mtx)) else (x)})
但是我有这个错误:
Error in if (x == NA) sample(100:500, replace = TRUE, size = nrow(mtx)) else (x) :
missing value where TRUE/FALSE needed
In addition: Warning message:
In if (x == NA) sample(100:500, replace = TRUE, size = nrow(mtx)) else (x) :
the condition has length > 1 and only the first element will be used
有任何想法吗?
最佳里卡多
您不能使用比较运算符来测试NA
,原因是该值是NA
或缺失。 is.na()
是用于识别NA
形式的缺失的适当函数。
这是在矩阵values
中替换NA
的示例。 这里的关键是以向量化的方式工作,只需确定哪些元素是NA
然后使用索引将所有NA
替换为所需的值。
> set.seed(2)
> values <- matrix(sample(1000:50000000, size=120, replace=TRUE),
+ nrow=6, ncol=20)
> ## add some NA to simulate
> values[sample(120, 20)] <- NA
>
> ## how many NA
> (tot <- sum(is.na(values)))
[1] 20
>
> ## replace the NA
> values[is.na(values)] <- sample(100:500, tot, replace=TRUE)
>
> ## now how many NA
> (sum(is.na(values)))
[1] 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.