选择矩阵/数据帧的列N,其中N基于另一个向量

时间:2014-01-17 19:23:50

标签: r

我有一个包含多个列的数据框X,并希望为每行选择N列,其中每行的N不同,具体取决于某些向量(在此示例中:列sel中的值)

    A   B   C   D   sel
16/04/2012  NA  -1.25   -1.25   0.25    1
17/04/2012  NA  20  21.25   17.25   1
18/04/2012  -5.25   -5.25   -5.75   -1  2
19/04/2012  -6  -6  -6.25   -12 2
20/04/2012  2.5 2.5 2.75    NA  2
23/04/2012  NA  -12.25  -12 NA  2
24/04/2012  NA  7.25    7.5 7.25    2
25/04/2012  NA  17.5    17  18.25   4
26/04/2012  NA  9.5 10  11.5    4
27/04/2012  NA  2   1   -3.25   4
30/04/2012  NA  -4.75   -4  -1  4
01/05/2012  NA  6.25    5.75    17  3
02/05/2012  NA  -3  -2.75   -16 3
03/05/2012  NA  -11.5   -11.5   -6.75   4
04/05/2012  NA  -23.5   -23.75  -23 4

所以我最终会以

结束
16/04/2012  NA
17/04/2012  NA
18/04/2012  -5.25
19/04/2012  -6
20/04/2012  2.5
23/04/2012  -12.25
24/04/2012  7.25
25/04/2012  18.25
26/04/2012  11.5
27/04/2012  -3.25
30/04/2012  -1
01/05/2012  5.75
02/05/2012  -2.75
03/05/2012  -6.75
04/05/2012  -23

X[,X$sel] 给了我一个等于nrow(X)的方阵,不是我需要的。

有某种" Excel的索引'我可以在apply函数中使用的函数类型吗?

1 个答案:

答案 0 :(得分:0)

您可以通过传递两列矩阵来使用subsetting数据框的方法,其中第一列中包含行号,第二列中包含列号。所以:

X[matrix(ncol=2, c(1:nrow(X), X$sel)]

将为您提供所选元素的向量,然后您可以将其构建到您想要的任何结果数据框中。或者只需添加到现有数据框中,如下所示:

X$selected_values <- X[matrix(ncol=2, c(1:nrow(X), X$sel)]