这是我的数据示例:
>dat <- matrix(c(59,50,48,44,44,NA,78,59,42,67,51,NA,72,64,64),byrow=TRUE,ncol=3)
>k <- apply(dat, 1, function(x) which(x == min(x, na.rm = TRUE)))
>k
[[1]]
[1] 3
[[2]]
[1] 1 2
[[3]]
[1] 3
[[4]]
[1] 2
[[5]]
[1] 2 3
但是,我希望输出像这样:
ķ
3 2 3 2 3
非常感谢提前。
答案 0 :(得分:3)
你想要每行的最大索引吗? 然后,
> k <- apply(dat, 1, function(x) max(which(x == min(x, na.rm = TRUE))))
> k
[1] 3 2 3 2 3
会这样做。
答案 1 :(得分:3)
您可以使用max.col(-dat, "last")
,但您必须先将NA
设置为Inf
。
答案 2 :(得分:2)
您可以使用此命令在每行的多个(选定)列上应用某些功能。在这里,我使用它来创建一个新列,列为最大列1和2(maxv12):
d2<-transform(d, maxv12=apply(d[,c(1,2)],1, max, na.rm = TRUE))
我的原始数据(d)是:
> head(d)
V1 V2 V3 V4
1 2.0960 3.5364 2.2627 3.4358
2 1.7210 3.3172 1.6559 3.3083
3 1.7950 3.2874 2.2214 3.8520
4 2.0187 3.4038 1.9036 3.4158
5 1.8991 3.6274 1.8083 3.4552
6 1.7382 3.1765 2.6270 4.0960
应用该命令会给我这个:
> head(d2)
V1 V2 V3 V4 maxv12
1 2.0960 3.5364 2.2627 3.4358 3.5364
2 1.7210 3.3172 1.6559 3.3083 3.3172
3 1.7950 3.2874 2.2214 3.8520 3.2874
4 2.0187 3.4038 1.9036 3.4158 3.4038
5 1.8991 3.6274 1.8083 3.4552 3.6274
6 1.7382 3.1765 2.6270 4.0960 3.1765