如何使用列名替换某些值

let*_*ome 3 r

我在R中有一张下表

df <- data.frame('a' = c(1,0,0,1,0),
                 'b' = c(1,0,0,1,0),
                 'c' = c(1,1,0,1,1))
df
   a  b  c
1  1  1  1
2  0  0  1
3  0  0  0
4  1  1  1
4  0  0  1
Run Code Online (Sandbox Code Playgroud)

我想要的是每当行等于1时用行名替换行值.输出将是这一个:

   a  b  c
1  a  b  c
2  0  0  c
3  0  0  0
4  a  b  c
4  0  0  c
Run Code Online (Sandbox Code Playgroud)

我怎么能在R中这样做?谢谢.

tal*_*lat 6

我会用Mapreplace:

df[] <- Map(function(n, x) replace(x, x == 1, n), names(df), df)
df
#   a b c
# 1 a b c
# 2 0 0 c
# 3 0 0 0
# 4 a b c
# 5 0 0 c
Run Code Online (Sandbox Code Playgroud)