首页 > 解决方案 > 如何获取值最接近 0 的列名?

问题描述

我有数据框df1,我想设置另一列,其值更接近 0:

df1

x <- c(1, 3,2) 
y <- c(2, 1,4) 
df1 <- data. frame(x, y) 
df1
#  x  y
#1 1  2
#2 3  1
#3 2  4

愿望输出:

 #  x   y  closer
 #1 1   2     x
 #2 3   1     y
 #3 2   4     x

标签: rdataframe

解决方案


使用max.col我们可以得到最接近 0 的值的索引

max.col(-abs(df))
#[1] 1 2 1

要获取列名,我们可以使用此索引从数据框中对其进行子集names

df$closest <- names(df)[max.col(-abs(df))]
df
#  x y closest
#1 1 4       x
#2 5 2       y
#3 3 6       x

数据

df <- structure(list(x = c(1L, 5L, 3L), y = c(4L, 2L, 6L)), class = "data.frame", 
row.names = c(NA, -3L))

推荐阅读