如何在向量或矩阵索引上使用应用函数
how to use apply functions familly on vector or matrix index
有没有办法使用 X 函数使用特定索引写入矩阵或向量或简单地处理索引?
例如
myVec <- numeric(10)
apply(1:9, 1, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)
以下两个答案都应该有效。您得到的错误是因为 apply() 采用矩阵并在边距上应用函数(=1 按行表示)。所以我根据你的代码创建了一个 9 x 1 矩阵。
apply(matrix(1:9,nrow=9,ncol=1), 1, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)
[1] 1.098612 9.000000 1.325969 81.000000 1.600377 729.000000 1.931573 6561.000000 2.331310
sapply(1:9, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)
[1] 1.098612 9.000000 1.325969 81.000000 1.600377 729.000000 1.931573 6561.000000 2.331310
有没有办法使用 X 函数使用特定索引写入矩阵或向量或简单地处理索引?
例如
myVec <- numeric(10)
apply(1:9, 1, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)
以下两个答案都应该有效。您得到的错误是因为 apply() 采用矩阵并在边距上应用函数(=1 按行表示)。所以我根据你的代码创建了一个 9 x 1 矩阵。
apply(matrix(1:9,nrow=9,ncol=1), 1, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)
[1] 1.098612 9.000000 1.325969 81.000000 1.600377 729.000000 1.931573 6561.000000 2.331310
sapply(1:9, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)
[1] 1.098612 9.000000 1.325969 81.000000 1.600377 729.000000 1.931573 6561.000000 2.331310