我希望能够使用循环在一组数据集上执行相同的功能,而无需单独调用所有数据集的名称。例如,假设我有以下基质:
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。
答案 0 :(得分:1)
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")
返回