我试图弄清楚如何迭代加载一个矩阵(这是一个更大的函数的一部分,我在这里无法再现)。
假设我创建了一个矩阵:
m <- matrix(c(1:9), nrow = 3, ncol = 3)
m这个矩阵可以被命名为"m","x“或任何东西。然后,我需要在函数中迭代加载矩阵:
if (interactive() ) { mat <-
readline("Your matrix, please: ")
}到目前为止,函数“知道”矩阵的名称,因为mat返回[1] "m",并且是ls()中列出的对象。但是当我试图获得矩阵值时,例如通过x <- get(mat),我总是得到一个错误。
get(mat)中的
错误:未使用的参数(mat)
有人能告诉我我在这里做错了什么吗?
发布于 2020-05-22 15:10:19
1)假设你指的是交互式的,而不是迭代的,
get_matrix <- function() {
nr <- as.numeric(readline("how many rows? "))
cat("Enter space separated data row by row. Enter empty row when finished.\n")
nums <- scan(stdin())
matrix(nums, nr, byrow = TRUE)
}
m <- get_matrix()下面是一个测试:
> m <- get_matrix()
how many rows? 3
Enter space separated data row by row. Enter empty row when finished.
1: 1 2
3: 3 4
5: 5 6
7:
Read 6 items
> m
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> 2)另一种可能性是要求用户使用R创建一个矩阵,然后给出矩阵的名称:
get_matrix2 <- function(envir = parent.frame()) {
m <- readline("Enter name of matrix: ")
get(m, envir)
}测试它:
> m <- matrix(1:6, 3)
> mat <- get_matrix2()
Enter name of matrix: m
> mat
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6https://stackoverflow.com/questions/61955778
复制相似问题