我有一个问题,我肯定可以很容易地回答,但是我似乎无法解决。我有许多格式相同的矩阵,并希望为它们分配相同的列和行名称。我试图通过调用所有矩阵然后分配名称来循环执行此操作。
这是我可复制的示例。
mnames <- letters[1:10] # The names to be assigned
mat1 <- matrix(rnorm(100),10,10)
mat2 <- matrix(rnorm(100),10,10)
mat3 <- matrix(rnorm(100),10,10)
obs <- c("mat2", "mat2", "mat3")
for(i in obs){
rownames(as.name(i)) <- mnames
colnames(as.name(i)) <- mnames
}
似乎循环没有调用对象,但是我不明白为什么?非常感谢您的帮助,我有很多矩阵,一一完成所有的分配工作将很乏味。谢谢!
答案 0 :(得分:2)
您可以在get
循环中for
矩阵,但我认为最好用mget
将它们放入列表,更改dimnames
,然后需要将其分配回全球环境。
list_mat <- lapply(mget(obs), function(x) {dimnames(x) <- list(mnames, mnames);x})
list2env(list_mat, .GlobalEnv)