'apply'函数中的行/列计数器

Bra*_*ani 28 r apply

如果想要apply一个功能,即矩阵的每一行,但也希望将该行的数量用作该函数的参数,该怎么办?例如,假设您想获得矩阵每行中数字的第n个根,其中n是行号.是否有另一种方法(apply仅使用)而不是将行号绑定到初始矩阵,就像这样?

test <- data.frame(x=c(26,21,20),y=c(34,29,28))

t(apply(cbind(as.numeric(rownames(test)),test),1,function(x) x[2:3]^(1/x[1])))
Run Code Online (Sandbox Code Playgroud)

PS实际上,如果测试真的是一个矩阵: test <- matrix(c(26,21,20,34,29,28),nrow=3) ,rownames(测试)没有帮助:(谢谢.

Ani*_*iko 31

我通常做的是sapply在行号上运行1:nrow(test)而不是在行号内test使用test[i,]:

t(sapply(1:nrow(test), function(i) test[i,]^(1/i)))
Run Code Online (Sandbox Code Playgroud)

不过,我不确定这是否真的有效.