Вы также можете попробовать, replace
функция из BASE R: , печать nwdf1, у вас будет ваш окончательный ответ.
nwdf <- replace(df,df == 1,names(df))
nwdf1 <- replace(nwdf, nwdf==0, '')
Где df:
structure(list(a = c(0, 1), b = c(1, 0)), .Names = c("a", "b"
), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-2L))
EDIT :
Более общее решение для вышеуказанного вопроса:
outputdf <- data.frame(sapply(names(df), function(x)ifelse(df[,x] == 1, x, '')), stringsAsFactors=F)
выход
# A tibble: 2 x 2
a b
<chr> <chr>
1 b
2 a