【发布时间】:2017-01-28 13:14:06
【问题描述】:
我想在矩阵的每个元素中设置 NA,其中列中的值大于或等于给定向量的值。例如,我可以创建一个矩阵:
set.seed(1)
zz <- matrix(data = round(10L * runif(12)), nrow = 4, ncol = 3)
这给了 zz:
[,1] [,2] [,3]
[1,] 8 5 7
[2,] 6 5 1
[3,] 5 10 3
[4,] 9 1 9
对于比较向量(例如):
xx <- round(10L * runif(4))
xx 在哪里:
[1] 6 3 8 2
如果我执行此操作:
apply(zz,2,function(x) x >= xx)
我明白了:
[,1] [,2] [,3]
[1,] TRUE FALSE TRUE
[2,] TRUE TRUE FALSE
[3,] FALSE TRUE FALSE
[4,] TRUE FALSE TRUE
我想要的是任何我有一个 TRUE 元素的地方我想要一个 NA 并且我有一个 FALSE 我得到 zz 矩阵中的数字(例如,手动...):
NA 5 NA
NA NA 1
5 NA 3
NA 1 NA
我可以拼凑一些“for”循环来做我想做的事,但是有没有基于向量的方法来做到这一点??
感谢任何提示。
【问题讨论】:
-
将矩阵与向量进行比较是按列进行的,因此您可以使用
zz >= xx。还有is.na(zz) = zz >= xx -
谢谢,亚历克西斯。不太明白为什么使用“=”而不是“