首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R语言迭代输入矩阵

R语言迭代输入矩阵
EN

Stack Overflow用户
提问于 2020-05-22 13:06:22
回答 1查看 284关注 0票数 0

我试图弄清楚如何迭代加载一个矩阵(这是一个更大的函数的一部分,我在这里无法再现)。

假设我创建了一个矩阵:

代码语言:javascript
复制
 m <- matrix(c(1:9), nrow = 3, ncol = 3)
 m

这个矩阵可以被命名为"m","x“或任何东西。然后,我需要在函数中迭代加载矩阵:

代码语言:javascript
复制
 if (interactive() ) { mat <- 
     readline("Your matrix, please: ")
 }

到目前为止,函数“知道”矩阵的名称,因为mat返回[1] "m",并且是ls()中列出的对象。但是当我试图获得矩阵值时,例如通过x <- get(mat),我总是得到一个错误。

get(mat)中的

错误:未使用的参数(mat)

有人能告诉我我在这里做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 15:10:19

1)假设你指的是交互式的,而不是迭代的,

代码语言:javascript
复制
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()

下面是一个测试:

代码语言:javascript
复制
> 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创建一个矩阵,然后给出矩阵的名称:

代码语言:javascript
复制
get_matrix2 <- function(envir = parent.frame()) {
  m <- readline("Enter name of matrix: ")
  get(m, envir)
}

测试它:

代码语言:javascript
复制
> 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61955778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档