使用R中的noquote()进行索引

时间:2016-10-05 20:04:47

标签: r indexing

如果我们有以下指定:

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))
}
希望你能帮助我!

1 个答案:

答案 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,它与你在这里想要完成的事情没有任何关系。