我是R的新手,所以我很抱歉,如果这不是一个好问题。
我有几个名为matrix1
,matrix2
等的数据框。
我想在循环中使用这两个命令:
A1=as.matrix(matrix1)
B1=graph.adjacency(A1,mode="directed",weighted=NULL,diag=FALSE)
但我无法弄清楚如何让循环更改矩阵的名称。 提前谢谢!
答案 0 :(得分:1)
使用assign()
在循环中创建矩阵/ data.frames。在循环中调用带编号的矩阵/ data.frame时,请使用get()
。
for (i in 1:n) {
assign(paste0("A", i), unname(as.matrix(get(paste0("matrix", i)))))
assign(paste0("B", i), graph.adjacency(get(paste0("A", i)),
mode = "directed",
weighted = NULL,
diag = FALSE))
}
答案 1 :(得分:1)
您可以使用get
按名称获取变量。
e.g。
for (i in 1:n) {
A1 = as.matrix(get(paste0('matrix', i)))
B1 = graph.adjacency(A1,mode="directed",weighted=NULL,diag=FALSE)
}
如果你想存储 B1
,你可以使用(例如)列表:
Bs <- lapply(1:n, function (i) {
A1 = ...
B1 = ...
return(B1)
})
然后Bs[[i]]
将包含矩阵i的B1
。
然后,进一步改进 - 而不是手动命名所有矩阵matrix1
,matrix2
,...,matrix10000
(特别是如果你有很多这些!),将它们存储在列表中会更好,例如As[[i]]
是matrix
我。 (我无法为您提供有关如何执行此操作的具体代码,因为它取决于矩阵的来源/填充方式。例如,您可能lapply(list_of_filenames, read.csv)
从文件列表中读取所有矩阵名)。
然后你可以:
Bs <- lapply(As, graph.adjacency, mode="directed", weighted=NULL, diag=FALSE)
不诉诸get
。