arrays - 在R中按行和列从数据框中调用多个值

标签 arrays r matrix dataframe

我在 R 中工作,我想通过列和行索引从数据框中调用一组值。然而,这样做会产生一个矩阵而不是一个数组。我将证明:

鉴于data.frame:

a = data.frame( a = array(c(1,2,3,4,5,6,7,8,9), c(3,3)) )

(对于那些不想插入它的人,它看起来像这样)
  a.1 a.2 a.3
1   1   4   7
2   2   5   8
3   3   6   9

假设我有两个数组指向我想要获取的值
grab_row = c(3,1,2)
grab_col = c(1,2,1)

现在我希望这是我想要的代码......
a[ grab_row, grab_col ]

为了得到这些结果...
[1] 3 4 2

但这是一个 3x3 矩阵,它本身就足够有意义
  a.1 a.2 a.1.1
3   3   6     3
1   1   4     1
2   2   5     2

好吧,我也看到我的答案在 3x3 矩阵的对角线上......但我真的宁愿坚持使用数组作为输出。

有什么想法吗?丹卡。

最佳答案

将行和列索引作为两列矩阵传入(此处使用 cbind() 构造)将获得您期望的元素:

a[cbind(grab_row, grab_col)]
[1] 3 4 2

这种形式的索引记录在 ?"[" 中。 :

Matrices and array:

[...snip...]

A third form of indexing is via a numeric matrix with the one column for each dimension: each row of the index matrix then selects a single element of the array, and the result is a vector.

关于arrays - 在R中按行和列从数据框中调用多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18520818/

相关文章:

r - 包含对应于矩阵中每个元素的出现次数的矩阵

javascript - 将数组拼接成两半,无论大小如何?

r - ggmap 绘制坐标的问题

javascript - R Shiny 无法使用外部 HTML 文件加载 css 文件

matlab - 向量作为矩阵中的列索引

r - 如何快速执行类似乘法的矩阵运算?

python - 生成与现有一维数组具有预先指定相关性的 NumPy 一维数组?

arrays - 卡丹的扭曲

c - fork() 后数组改变值

R裁剪栅格数据和设置轴限制