我在 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
这种形式的索引记录在
?"["
中:关于arrays - 在R中按行和列从数据框中调用多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18520818/