我试图循环遍历矩阵的列并更改colomns中的某些预定义序列,这些序列以向量的形式提供。
假设我有以下矩阵:
m2 <- matrix(sample(1:36),9,4)
[,1] [,2] [,3] [,4]
[1,] 11 6 1 14
[2,] 22 16 27 3
[3,] 34 10 23 32
[4,] 21 19 31 35
[5,] 17 9 2 4
[6,] 28 18 29 5
[7,] 20 30 13 36
[8,] 26 33 24 15
[9,] 8 12 25 7
作为一个例子,我的序列开始向量是a,我的序列结束向量是b。因此,要删除所有列的第一个序列是a[1]
到b[1]
,第二个a[2]
到b[2]
依此类推。
我的测试代码如下:
testing <- function(x){
apply(x,2, function(y){
a <- c(1,5)
b <- c(2,8)
mapply(function(y){
y[a:b] <- NA; y
},a,b)
})
}
预期结果:
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] 34 10 23 32
[4,] 21 19 31 35
[5,] NA NA NA NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
[9,] 8 12 25 7
实际结果:
Error in (function (y) : unused argument (dots[[2]][[1]])
上面的代码有什么问题?我知道我可以将行设置为NA,但我试图通过使用嵌套的apply
函数来获取上述输出,以了解有关它们的更多信息。
答案 0 :(得分:2)
我们得到了&#39; a&#39;,&#39; b&#39;的相应元素序列。使用unlist
,vector
创建m2[unlist(Map(":", a, b)),] <- NA
m2
# [,1] [,2] [,3] [,4]
# [1,] NA NA NA NA
# [2,] NA NA NA NA
# [3,] 34 10 23 32
# [4,] 21 19 31 35
# [5,] NA NA NA NA
# [6,] NA NA NA NA
# [7,] NA NA NA NA
# [8,] NA NA NA NA
# [9,] 8 12 25 7
并分配&#39; m2&#39;以此为基础的NA。
$.each(item.data