【发布时间】:2018-08-29 23:12:09
【问题描述】:
使用 R,我试图用 M 维向量过滤 N x M 维矩阵的行,替换为 NA 矩阵每一行中的那些值小于向量中索引的对应值。
直觉告诉我,这应该使用apply() 的一些变体来在矩阵的每一行上迭代过滤器,但我不确定如何在实践中编写代码。
我通常不会将 R 用于此类任务,但一位同事要求使用该语言编写代码。谢谢
【问题讨论】:
使用 R,我试图用 M 维向量过滤 N x M 维矩阵的行,替换为 NA 矩阵每一行中的那些值小于向量中索引的对应值。
直觉告诉我,这应该使用apply() 的一些变体来在矩阵的每一行上迭代过滤器,但我不确定如何在实践中编写代码。
我通常不会将 R 用于此类任务,但一位同事要求使用该语言编写代码。谢谢
【问题讨论】:
如果您想使用 apply 获得答案,以下代码可能会有所帮助:
m <- matrix(c(NA, 3, 3, 4, 2, NA, 4, 3, 5, 6, NA, NA), nrow = 4, ncol = 3)
apply(m, 1:2, function(x) ifelse(is.na(x), -1, x))
Apply 遍历每个单元格并搜索 NA。如果它检测到 NA,它将用 -1 替换它(或者您可以使用您选择的任何其他值)。否则,它将保持原始值不变。
【讨论】: