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"矩阵的名称,因为mat
returns[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
我正在尝试弄清楚如何迭代加载矩阵(这是我无法在此处重现的更大函数的一部分)。
假设我创建了一个矩阵:
m <- matrix(c(1:9), nrow = 3, ncol = 3)
m
此矩阵可以命名为 "m"、"x" 或任何名称。然后,我需要在函数中迭代加载矩阵:
if (interactive() ) { mat <-
readline("Your matrix, please: ")
}
至此,函数"knows"矩阵的名称,因为mat
returns[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