R:如何在每一行中生成最高值的向量?
R: How to generate vectors of highest value in each row?
假设我的数据框包含
> DF
V1 V2 V3
1 0.3 0.4 0.7
2 0.4 0.2 0.1
3 0.2 0.8 0.3
4 0.5 0.8 0.9
5 0.2 0.7 0.8
6 0.8 0.3 0.6
7 0.1 0.5 0.4
行将是不同类型的汽车,
列将是给定类别 V1、V2、V3 的概率。
我想生成一个向量,为每辆汽车分配其概率最高的类别。
例如,我希望汽车 1 与 V3 关联,汽车 2 与 V1 关联,汽车 3 与 V2 关联。
关于我应该如何解决这个问题的任何帮助或提示?
我们可以用max.col
得到每一行中最大值对应的列索引
names(DF)[max.col(DF, "first")]
#[1] "V3" "V1" "V2" "V3" "V3" "V1" "V2"
另一个解决方案是:
names(DF)[apply(DF, 1, which.max)]
# [1] "V3" "V1" "V2" "V3" "V3" "V1" "V2"
假设我的数据框包含
> DF
V1 V2 V3
1 0.3 0.4 0.7
2 0.4 0.2 0.1
3 0.2 0.8 0.3
4 0.5 0.8 0.9
5 0.2 0.7 0.8
6 0.8 0.3 0.6
7 0.1 0.5 0.4
行将是不同类型的汽车, 列将是给定类别 V1、V2、V3 的概率。
我想生成一个向量,为每辆汽车分配其概率最高的类别。 例如,我希望汽车 1 与 V3 关联,汽车 2 与 V1 关联,汽车 3 与 V2 关联。
关于我应该如何解决这个问题的任何帮助或提示?
我们可以用max.col
得到每一行中最大值对应的列索引
names(DF)[max.col(DF, "first")]
#[1] "V3" "V1" "V2" "V3" "V3" "V1" "V2"
另一个解决方案是:
names(DF)[apply(DF, 1, which.max)]
# [1] "V3" "V1" "V2" "V3" "V3" "V1" "V2"