r - 如何用列名替换某些值

标签 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

我想要的是在行等于 1 时用列名替换行值。输出将是这样的:
   a  b  c
1  a  b  c
2  0  0  c
3  0  0  0
4  a  b  c
4  0  0  c

我怎样才能在 R 中做到这一点?谢谢。

最佳答案

我会用 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

关于r - 如何用列名替换某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50235510/

相关文章:

r - 获取数据帧 R 的所有列的平均值

R rlm 模型错误 : 'x' is singular: singular fits are not implemented in 'rlm'

r - 软件开发与统计编程/分析相比如何?

r - 如何在 rmakdown Rmd 文件中包含摘要

r - 将摘要(aov()) 的嵌套列表中的值提取到数据框中

R 计算股票的 beta(使用 PerformanceAnalytics CAPM.beta() 函数或 lm() 函数产生意外结果)

r - 无法在 WSL Ubuntu 18.04 上安装 R Shiny Server

r - SVM-RFE算法在R中的实现

r - 按字符分隔字段中的变量

r - 使用 2 个变量的 facet_wrap 更改 strip.text 的颜色