簡體   English   中英

R:用其列名替換df / matrix值

[英]R: replacing df/matrix value by its column name

我有一個非常稀疏的矩陣或數據幀(有一些1和很多零)

col1   colAname   colBname   colCname ...
-----------------------------------------
text   0          1          0
text   1          0          0
...
text   0          0          0

我希望將每個“ 1”值替換為其列名,如下所示

col1   colAname   colBname   colCname ...
-----------------------------------------
text   0          colBname          0
text   colAname          0          0
...
text   0                 0          0

有沒有不使用for循環的有效方法嗎? 先感謝您

你可以試試

 df[,-1][!!df[,-1]] <- colnames(df[,-1])[col(df[,-1])][!!df[,-1]]
 df
 # col1 colAname colBname colCname
 #1 text        0 colBname        0
 #2 text colAname        0        0
 #3 text        0        0        0

要么

  df[,-1][!!df[,-1]] <- colnames(df)[t(t(df[,-1])*(2:ncol(df)))]

數據

 df <- data.frame(col1='text', colAname = c(0, 1, 0), 
                           colBname=c(1, 0, 0), colCname=0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM