2

我在 a 中有两组列data.frame:某个位置的时间和该位置的属性。

> FRAME <- data.frame(cbind(rnorm(5, 0,1), rnorm(5, 0,1), rchisq(5, 1,4), rchisq(5,1,4)))
> names(FRAME) <- c("Var1", "Var2", "Time1", "Time2")
> FRAME$LONGEST <- apply(FRAME[,3:4], 1, function(x) which.max(x))
> FRAME
        Var1       Var2    Time1     Time2 
1  0.2919722 -0.1069673 4.666482  1.556280 
2 -0.6518142  1.1226106 4.867360  9.251785 
3 -1.8612779  0.2874144 7.578548  1.820536 
4 -0.7059450 -0.1036744 1.428684 16.937638 
5  2.1793696  0.8993723 1.639895  7.942257 

我想选择与之关联Var*时间最长的新变量。Time*确定哪一列很容易,

> FRAME
        Var1       Var2    Time1     Time2 LONGEST
1  0.2919722 -0.1069673 4.666482  1.556280       1
2 -0.6518142  1.1226106 4.867360  9.251785       2
3 -1.8612779  0.2874144 7.578548  1.820536       1
4 -0.7059450 -0.1036744 1.428684 16.937638       2
5  2.1793696  0.8993723 1.639895  7.942257       2

对我来说检索正确列的最直接方法给出了一个完全无用的结果

FRAME[,FRAME$LONGEST]
        Var1       Var2     Var1.1     Var2.1     Var2.2
1  0.2919722 -0.1069673  0.2919722 -0.1069673 -0.1069673
2 -0.6518142  1.1226106 -0.6518142  1.1226106  1.1226106
3 -1.8612779  0.2874144 -1.8612779  0.2874144  0.2874144
4 -0.7059450 -0.1036744 -0.7059450 -0.1036744 -0.1036744
5  2.1793696  0.8993723  2.1793696  0.8993723  0.8993723

我错过了什么?有没有办法改变which.max()从与其参考不同的矩阵中进行选择?

4

1 回答 1

2

只是:

apply(FRAME,1,function(x) x[1:2][which.max(x[3:4])])
于 2013-08-06T15:50:49.003 回答