【问题标题】:How Do I Mesh a Numeric Vector and a Character Matrix?如何对数值向量和字符矩阵进行网格划分?
【发布时间】:2020-02-08 19:33:56
【问题描述】:

我是 R 新手,正在尝试做一个业余项目来补充我的课堂学习。

我正在尝试匹配类似这个向量的东西

```{R}
matrixvalues <- sample(8, 8 , replace=TRUE)
```

在这个例子中会导致

8 3 4 2 4 5 5 1

到这个矩阵

#     [,1]  [,2]  [,3]  [,4] [,5] [,6] [,7] [,8]
#[1,] "C"  "S"  "H"  "H"  "H"  "H"  "H"  "M" 
#[2,] "C"  "S"  "H"  "H"  "H"  "H"  "H"  "M" 
#[3,] "C"  "S"  "H"  "H"  "H"  "H"  "H"  "M" 
#[4,] "C"  "S"  "H"  "H"  "H"  "M"  "M"  "M" 
#[5,] "C"  "S"  "H"  "H"  "H"  "M"  "M"  "M" 
#[6,] "C"  "S"  "H"  "M"  "M"  "M"  "M"  "M" 
#[7,] "C"  "S"  "H"  "M"  "M"  "M"  "M"  "M" 
#[8,] "C"  "S"  "H"  "M"  "M"  "M"  "M"  "M"

对于向量中的每个值,它在矩阵列中顺序匹配。

因此,输出向量在逻辑上会像...

Vector value 1 is 8, so row 1, column 8 is M...

Vector value 2 is 3, so row 2, column 3 is H...

等等……

所以得到的向量是

M , H , H , S , H , M , M , C

这是工作代码,我会随时更新...

创建进攻矩阵

example <- c("C","S","H","H","H","H","H","M","C","S","H","H","H","H","H","M","C","S","H","H","H","H","H","M","C","S","H","H","H","M","M","M","C","S","H","H","H","M","M","M","C","S","H","M","M","M","M","M","C","S","H","M","M","M","M","M","C","S","H","M","M","M","M","M")
rollmatrix <- matrix (example, 8 , 8 , byrow = TRUE)
rollmatrix

掷骰子

set.seed(1234) 
matrixvalues <- sample( 8 , 8 , replace=TRUE)
matrixvalues

评估初始滚动

inx_mat <- cbind(row = seq_along(matrixvalues), col = matrixvalues)
initialroll <- rollmatrix[inx_mat]
initialroll

【问题讨论】:

  • 尽量保持问题的具体和重点。如果您有两个不同的问题,则应将它们分成两个单独的帖子
  • 第二个问题用索引矩阵解决:inx_mat &lt;- cbind(row = seq_along(matrixvalues), col = matrixvalues) 然后用这个inx_mat得到你想要的值,matrixchar[inx_mat]
  • @camille 这样更好吗?问题冷却时间结束后,我将重新提交另一个问题。

标签: r object matrix vector knitr


【解决方案1】:

使用索引矩阵,在本例中为具有 2 列的矩阵,即行和列。

set.seed(1234)    # Make the code reproducible

x <- matrix(sample(LETTERS, 64, replace = TRUE), 8)
matrixvalues <- sample(8, 8, replace = TRUE)

现在是索引矩阵。

inx_mat <- cbind(row = seq_along(matrixvalues), col = matrixvalues)
x[inx_mat]
#[1] "S" "N" "V" "Z" "X" "K" "I" "F"

【讨论】:

  • 当我使用它时,它返回了 6 个值,而不是 8 个。想法?
  • @JackKarrde 你能贴出你用来创建索引矩阵的代码吗? seq_along 确保行号是连续的,因此都不同。
  • 奇怪,一旦它尝试了 Knitr,它返回 8。所以我猜它成功了!不知道为什么当我单独运行块时它只给出 6...
  • 我在问题中添加了我正在使用的确切代码
  • 我重新启动 R 并重新运行所有块,它也返回 8。不知道问题是什么,但我认为我们很好!!!感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 2012-01-27
  • 2021-03-26
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
相关资源
最近更新 更多