我有这个矩阵:
> mtrx <- matrix(c(1:30), nrow=10)
> mtrx
[,1] [,2] [,3]
[1,] 1 11 21
[2,] 2 12 22
[3,] 3 13 23
[4,] 4 14 24
[5,] 5 15 25
[6,] 6 16 26
[7,] 7 17 27
[8,] 8 18 28
[9,] 9 19 29
[10,] 10 20 30
> is.matrix(mtrx)
[1] TRUE
我可以apply
以这种方式对每列进行操作(在本例中为mean
):
> apply(mtrx, 2, mean)
[1] 5.5 15.5 25.5
我还可以将rollapply
函数用于特定列(在本例中为1st)
> require(zoo)
> rollapply(mtrx[,1], width = 2, by = 2, FUN = mean, align = "left")
[1] 1.5 3.5 5.5 7.5 9.5
如何结合上述方法并在每个矩阵列上执行rollapply
?我试过以下:
> apply(mtrx, 2, rollapply, width = 2, by = 2, FUN = mean, align = "left")
Error in mean.default(newX[, i], ...) :
'trim' must be numeric of length one
方法建议here:
> apply(mtrx, 2, function(x) rollapply(width = 2, by = 2, FUN = mean, align = "left"))
Error in index(x) : argument "data" is missing, with no default
但两个都给了我一个我不明白的错误。
答案 0 :(得分:1)
从评论中移出。
您不需要 echo '<option value="'.$row[Product_Name].'">'.$row[Product_Name].'</option>"';
。默认情况下,apply
已经作用于矩阵的每一列:
rollapply
请参阅rollapply(mtrx, width = 2, by = 2, FUN = mean, align = "left")
此外,您的代码无效的原因是?rollapply
被视为传递给FUN=mean
的函数,而不是传递给apply
的函数。