【发布时间】:2017-08-15 06:40:16
【问题描述】:
我有一个这样的矩阵
df <- matrix(c(rep(1,3),rep(2,3)),nrow=3,ncol=2)
df:
[,1] [,2]
[1,] 1 2
[2,] 1 2
[3,] 1 2
我想将每个单元格值转换为YES,如果大于0,则为NO
我知道我可以使用
apply(df, 2, function(x) ifelse(x > 0, "Yes","No"))
但是我的矩阵非常大(百万 * 5000),因此使用 apply 需要非常长的时间
我也试过
df <- ifelse(df > 0, "Yes","No")
但是即使这样也需要很多时间
我可以通过这个获得更好的性能吗?
【问题讨论】:
-
为什么需要
"Yes"/"No"。只需执行df > 0并获取TRUE/FALSE即可 -
您是否尝试过使用
replace? -
@Bati:每列(向量)都可以使用replace,我需要对所有列都这样做,会有帮助吗?
-
感谢大卫:这有效,您能否将其添加到答案中,这真的很有帮助
-
df > 0或者如果不可能有负值df[] <- as.logical(df)。创建字符值不是必需的,而且效率较低。