如果我们有以下指定:
testmatrix <- matrix(seq(1:12), nrow=3, ncol=4)
colnames(testmatrix) <- c("one", "two", "three", "four")
index1 <- c("one", "two")
index2 <- c("two", "three")
index3 <- c("three", "four")
为什么这样做:
apply(testmatrix[,index1], 1, sum)
但这不是吗?
apply(testmatrix[,(noquote(paste0("index", 1)))], 1, sum)
我问的原因是因为我需要将sum函数应用于“index”变量中指定的列,并将其添加到每个变量的矩阵中。我曾想过如下做,但它不起作用。
nindex <- 3
for (i in 1:nindex) {
testmatrix <- cbind(testmatrix, apply(testmatrix[,(noquote(paste0("index", i)))], 1, sum))
}
希望你能帮助我!
答案 0 :(得分:2)
一个更简单的选择(其中很多,我敢肯定):
ind <- list(index1 = index1,
index2 = index2,
index3 = index3)
for (i in seq_along(ind)) {
testmatrix <- cbind(testmatrix, apply(testmatrix[,ind[[i]]], 1, sum))
}
无论你做什么,只要放弃noquote
,它与你在这里想要完成的事情没有任何关系。