[英]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.