【问题标题】:R: returning and accessing matrix in vectorR:返回和访问向量中的矩阵
【发布时间】:2018-03-23 15:08:56
【问题描述】:

所以在我的一个名为 place 的函数中,我返回一个矩阵 board 和一个向量 av_targets

place <- function(ship, orientation, location, board, av_targets){
  if (orientation[1] ==-1){
    for (i in 0:(as.integer(ships_dim[ship])-1)){
      board[location[1],location[2]+(i*as.integer(orientation[2]))]<- keys[ship]
      av_targets <- av_targets[av_targets != paste0(location[1],location[2])]
    }
  }
  if (orientation[1] ==1){
    for (i in 0:(as.integer(ships_dim[ship])-1)){
      board[location[1]+(i*as.integer(orientation[2])),location[2]]<- keys[ship]
      av_targets <- av_targets[av_targets != paste0(location[1],location[2])]
    }
  }
  return(c(board,av_targets))
}

然后我在分配中调用位置,例如,v &lt;- place("destroyer",c(1,1),c(4,4), computer_board,computer_av_targets)

但现在我无法访问返回的av_targets。如果我执行 v[2],它将返回矩阵的第二个索引,即 10x10 矩阵。所以我不确定如何从函数返回的内容中检索 av_targets

编辑:我还需要能够从 return 语句中检索整个矩阵。那么我怎样才能访问它。我习惯了 python,我只需调用 v[1] 并获取矩阵,而 v[2] 将获取 av_targets。

【问题讨论】:

  • 你可以试试return(list(board,av_targets)),用列表代替向量。不如试试 v[[2]]
  • 我尝试了 v[[1]] 和 v[[2]],但它仍然给了我矩阵的第一个和第二个元素
  • 我已经编辑了我的评论。请再试一次。
  • 啊,谢谢!

标签: r matrix vector return


【解决方案1】:

您试图返回具有两种不同数据类型的向量,但向量仅存储确定类的原子数据类型。 在 R 中,只有 List 和数据框能够存储具有多种类类型的数据。 所以而不是:

return(c(board,av_targets))

创建一个列表并返回它:

k

返回 k

【讨论】:

  • 也可以尝试创建类并直接返回它的对象,但这对于这个特定问题来说是不必要的
猜你喜欢
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多