我有一个包含多个列的数据框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函数中使用的函数类型吗?
答案 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)]