我有六个矩阵:m1、m2、m3、m4、m5 和 m6。为了一个简单的例子,假设它们看起来像这样:
m1<- matrix(1:10, 2, 5)
m2<- matrix(11:20, 2, 5)
m3<- matrix(21:30, 2, 5)
m4<- matrix(31:40, 2, 5)
m5<- matrix(41:50, 2, 5)
m6<- matrix(51:60, 2, 5)
最终,我想将一个函数应用于所有 6 个:
f(m1,m2,m3,m4,m5,m6)
因为每次运行脚本时矩阵的数量都会有所不同,所以我正在寻找一种以编程方式执行此操作的方法。我的第一个方法是执行以下功能:
paste("m",1:6,sep="")
上面的表达式返回一个字符串:
[1] "m1" "m2" "m3" "m4" "m5" "m6"
为了找到值,而不是矩阵的名称,我尝试通过以下函数将“get”添加到组合中:
get(paste("m",1:6,sep=""))
但是“get”表达式只返回了 m1 的值,而忽略了我想要的所有其他内容。所以,我开始搞乱 for 循环:
for(k in 1:6){
if(k == 1){b<- paste("m",k,sep="")}
else{b<- c(b, paste("m",k,sep=""))}
}
> b
[1] "m1" "m2" "m3" "m4" "m5" "m6"
这是我第一次尝试时得到的相同字符串。因此,以下表达式失败:
w<- f(b)
我也试过:
w<- f(get(b))
可以预见的是,R 将 m1 识别为矩阵,但忽略了 B 中的其余项。
我也试过:
w<- f(get(b[1:6]))
当我这样做时,我得到与上面相同的结果。
最后,我还尝试将 b 变成一个列表:
b<- list(m1,m2,m3,m4,m5,m6)
我曾希望使用 lapply(b, g),但是该函数(我没有编写并且有义务使用)在放入 lapply 时无法正常工作。
关于如何完成这个看似简单的任务的任何其他想法?我对 R 还比较陌生,所以很可能有一种我不知道的众所周知的方法,但是我在搜索现有文档时一无所获,而且我觉得需要帮助来解决问题是愚蠢的这个小。为论坛的帮助干杯。