查找 R 数据框中每行最大值对应的列名。
为了找到 R 数据框中每行最大值对应的列名,我们可以结合使用 `colnames` 函数和 `apply` 函数。
例如,如果我们有一个名为 `df` 的数据框,我们可以使用如下命令查找每行最大值对应的列名:
df$Largest_Column<-colnames(df)[apply(df,1,which.max)]
示例 1
以下代码片段创建了一个示例数据框:
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) df1<-data.frame(x1,x2,x3) df1
创建了以下数据框
x1 x2 x3 1 -0.305888032 1.42530072 -0.60397460 2 0.077412581 1.33102088 1.09897001 3 -0.001797155 1.85365113 0.59881492 4 -0.235863387 -0.11476965 -0.23914040 5 0.641954539 -0.80069293 1.78915326 6 1.662750089 -0.48168001 -1.63141513 7 1.393413983 -0.21044222 -0.36966594 8 0.387820650 0.04998259 -0.88707049 9 -0.982245543 -1.04089646 1.51510464 10 1.540251727 -0.24360161 -0.72272136 11 0.871043177 -1.61258877 -0.08300941 12 0.894436819 1.22285505 0.25353571 13 -0.706468609 0.37879788 1.09617879 14 1.366866702 -2.36429211 0.47667869 15 0.827015705 -0.29348558 2.57175974 16 -0.709173752 -0.68338183 -0.15060505 17 0.464121383 -0.41577526 -1.52947993 18 -0.322493725 0.46212973 1.38418790 19 0.588932732 -1.98841476 0.43082069 20 -0.775650742 -0.45247281 0.62378543
为了在上面创建的数据框 `df1` 中找到每行最大值对应的列名,请将以下代码添加到上面的代码片段中:
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) df1<-data.frame(x1,x2,x3) df1$Largest_Column<-colnames(df1)[apply(df1,1,which.max)] df1
输出
如果您将上面所有代码片段作为一个程序执行,它将生成以下输出:
x1 x2 x3 Largest_Column 1 -0.305888032 1.42530072 -0.60397460 x2 2 0.077412581 1.33102088 1.09897001 x2 3 -0.001797155 1.85365113 0.59881492 x2 4 -0.235863387 -0.11476965 -0.23914040 x2 5 0.641954539 -0.80069293 1.78915326 x3 6 1.662750089 -0.48168001 -1.63141513 x1 7 1.393413983 -0.21044222 -0.36966594 x1 8 0.387820650 0.04998259 -0.88707049 x1 9 -0.982245543 -1.04089646 1.51510464 x3 10 1.540251727 -0.24360161 -0.72272136 x1 11 0.871043177 -1.61258877 -0.08300941 x1 12 0.894436819 1.22285505 0.25353571 x2 13 -0.706468609 0.37879788 1.09617879 x3 14 1.366866702 -2.36429211 0.47667869 x1 15 0.827015705 -0.29348558 2.57175974 x3 16 -0.709173752 -0.68338183 -0.15060505 x3 17 0.464121383 -0.41577526 -1.52947993 x1 18 -0.322493725 0.46212973 1.38418790 x3 19 0.588932732 -1.98841476 0.43082069 x1 20 -0.775650742 -0.45247281 0.62378543 x3
示例 2
以下代码片段创建了一个示例数据框:
y1<-rpois(20,5) y2<-rpois(20,5) y3<-rpois(20,5) y4<-rpois(20,5) df2<-data.frame(y1,y2,y3,y4) df2
创建了以下数据框
y1 y2 y3 y4 1 4 5 4 8 2 6 6 8 5 3 4 7 5 4 4 8 2 7 7 5 3 6 5 0 6 4 5 4 7 7 6 1 2 9 8 5 4 3 5 9 9 5 6 5 10 8 3 7 9 11 5 14 7 5 12 4 7 4 4 13 9 3 1 2 14 5 8 9 4 15 2 7 2 5 16 4 3 3 5 17 4 6 4 4 18 7 6 4 4 19 12 6 8 4 20 6 6 4 5
为了在上面创建的数据框 `df2` 中找到每行最大值对应的列名,请将以下代码添加到上面的代码片段中:
y1<-rpois(20,5) y2<-rpois(20,5) y3<-rpois(20,5) y4<-rpois(20,5) df2<-data.frame(y1,y2,y3,y4) df2$Largest_Col<-colnames(df2)[apply(df2,1,which.max)] df2
输出
如果您将上面所有代码片段作为一个程序执行,它将生成以下输出:
y1 y2 y3 y4 Largest_Col 1 4 5 4 8 y4 2 6 6 8 5 y3 3 4 7 5 4 y2 4 8 2 7 7 y1 5 3 6 5 0 y2 6 4 5 4 7 y4 7 6 1 2 9 y4 8 5 4 3 5 y1 9 9 5 6 5 y1 10 8 3 7 9 y4 11 5 14 7 5 y2 12 4 7 4 4 y2 13 9 3 1 2 y1 14 5 8 9 4 y3 15 2 7 2 5 y2 16 4 3 3 5 y4 17 4 6 4 4 y2 18 7 6 4 4 y1 19 12 6 8 4 y1 20 6 6 4 5 y1
广告