根据行列组合对data.frame进行子集

时间:2019-01-09 13:19:23

标签: r subset

我想基于存储在另一个data.frame中的下标来对data.frame进行子集化。

例如,如果我有以下data.frame:

 set.seed(1)
 x <- rnorm(5)
 df <- data.frame(x,x*x, x*2, x/2)

 df
           x      x...x      x...2         x.2
1 -0.6264538 0.39244438 -1.2529076 -0.31322691
2  0.1836433 0.03372487  0.3672866  0.09182166
3 -0.8356286 0.69827518 -1.6712572 -0.41781431
4  1.5952808 2.54492084  3.1905616  0.79764040
5  0.3295078 0.10857537  0.6590155  0.16475389

我想对[1,3]和[2,4]的值进行子集化。因此,我想用作子设置键的data.frame如下所示:

sub <- data.frame(row = c(1,2), col = c(3,4))

sub
  row col
1   1   3
2   2   4

我的结果应如下所示:

c(df[1,3], df[2,4])
[1] -1.25290762  0.09182166

但是,所有这些操作都应在一个df[*]内完成

我知道这很容易,但是我仍然无法弄清楚!因此,非常感谢。

1 个答案:

答案 0 :(得分:1)

将其转换为matrix和子集

df[as.matrix(sub)]
#[1] -1.25290762  0.09182166
相关问题