zone_id=1:6
v1=c(12,22,31,12,5,17)
v2=c(15,22,28,16,18,21)
v3=c(18,10,14,9,10,17)
v4=c(20,3,2,5,12,21)
mydata=data.frame(zone_id,v1,v2,v3,v4)
我有一个数据框,可以使用上面的代码来制作一个粗略的模型。它由与地理区域相关的数据行组成。我有一些变量(在这个例子中是4个,在我的实际数据集中是69个),其中包含整数,这些整数是这些区域的观测值。
对于每个zone_id,我想要确定从V1到V4中包含最大值的变量。如果存在并列情况,则希望返回包含并列最大值的每个变量的名称。因此,对于zone 1,我想要返回V4,对于zone 2,我想要返回V1和V2等等。
我非常新手R,并且无法解决这个问题。我已经查看了R帮助文件,并认为可能有一种使用sweep的解决方案?任何帮助将不胜感激。
which.max()
的原因是 OP 想要返回所有索引,如果存在并列的最大值。which.max()
返回第一个遇到的最大值,这就是它和which(x == max(x))
版本的差异所在。确切地说,在x
中不存在相同值时,which.max(x)
仅等价于which(x == max(x))
。 - Gavin SimpsonNA
将列表组件填充到最长组件的长度。这是可以做到的,但取决于你接下来想要用它们做什么。最好将列表保留为原样,并对列表进行单独的分析。如果需要帮助,请提出另一个问题。 - Gavin Simpson