将列表对象转换为可用的矩阵名称(R)

时间:2016-10-05 19:24:57

标签: r vector

我希望能够使用循环在一组数据集上执行相同的功能,而无需单独调用所有数据集的名称。例如,假设我有以下基质:

a<-matrix(1:5,nrow=5,ncol=2)
b<-matrix(6:10,nrow=5,ncol=2)
c<-matrix(11:15,nrow=5,ncol=2)

我定义了一组集合名称:

SetNames<- c("a","b","c")

然后我想总结所有基质的第二列,而不必调用每个矩阵名称。基本上,我希望能够调用SetNames[1],让程序返回'a'作为可用的文本,可以用来调用apply(a[2],2,sum)

如果apply(SetNames[1][2],2,sum)有效,那将是我正在寻找的基本语法,但是我会用一个我可以在循环中增加的变量替换1。

1 个答案:

答案 0 :(得分:1)

sapply可以做到这一点。

sapply(SetNames, function(z) {
  dfz <- get(z)
  sum(dfz[,2])
})
#  a  b  c 
# 15 40 65 

请注意,此处使用get()来动态访问变量。

一种不那么紧凑的写作方式是

sumRowTwo <- function(z) {
  dfz <- get(z)
  sum(dfz[,2])
}
sapply(SetNames, sumRowTwo)

现在你可以玩sumRowTwo并看看例如

sumRowTwo("a")

返回