R语言迭代输入一个矩阵

R language iteratively input a matrix

我正在尝试弄清楚如何迭代加载矩阵(这是我无法在此处重现的更大函数的一部分)。

假设我创建了一个矩阵:

 m <- matrix(c(1:9), nrow = 3, ncol = 3)
 m

此矩阵可以命名为 "m"、"x" 或任何名称。然后,我需要在函数中迭代加载矩阵:

 if (interactive() ) { mat <- 
     readline("Your matrix, please: ")
 }

至此,函数"knows"矩阵的名称,因为matreturns[1] "m",并且是ls()中列出的对象。但是当我尝试获取矩阵值时,例如通过 x <- get(mat) 我不断收到错误

Error in get(mat) : unused argument (mat)

谁能告诉我我做错了什么?

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    6