起初,我认为以下问题绝对容易,我只是无法谷歌或正确解释,但如果是这样,请给我一个链接,我会关注它。
我提出了当前问题的最小例子,但我对这个问题感兴趣。
dataset <- matrix(runif(10*3), nrow=10, ncol=3)
rownames(dataset) <- letters[1:dim(dataset)[1]]
betas <- matrix(0, nrow=dim(dataset)[1], ncol=2)
rownames(betas) <- letters[1:dim(dataset)[1]]
colnames(betas) <- c("sum", "2*sum")
for(name in rownames(betas)){
res1 <- sum(dataset[name, ])
res2 <- res1 *2
betas[name, ] <- c(res1, res2)
}
当然这很好用,但我有大约20000行,所以花了太多时间。
我可以使用apply或其中一个系列替换循环吗?
修改 我在哪里丢失了最后一段代码,我评论了为什么我必须这样做。 我真正的问题是如下,因此我不能只是做一个总和,然后再乘以它:
for(name in rownames(betas)){
res1 <- coxph("amazing survival model calculations")
res2 <- summary(res1)
betas[name, ] <- c(res1$coef, res2$coef[5])
}
答案 0 :(得分:0)
这是一个R单行做同样的事情:
cbind(betas, t(apply(dataset, 1, function(x) c('res1'=sum(x), 'res1*2'=sum(x)*2))))
答案 1 :(得分:0)
rowSums()
保留names
和data.frames
的{{1}}属性,因此您可以轻松完成此操作:
matrices