## convert names columns with one hot encoding to list of column names
tags2list <- function(data, ...){
data %>%
select(...) %>%
{Map(function(x, y){
ifelse(x > 0, y, NA)
}, ., names(.))} %>%
unlist(use.names = FALSE)
}
list2tags <- function(data, ncol = length(unique(na.omit(unlist(data))))){
# browser()
lapply(data, function(x){
x %>%
matrix(ncol = ncol) %>%
as.data.frame()
}) %>%
bind_rows() %>%
{Map(function(x){
setNames(tibble(x = ifelse(is.na(x), 0L, 1L)), unique(na.omit(x)) )
}, .)} %>%
bind_cols()
}
## convert names columns with one hot encoding to list of column names
tags2list <- function(data, ...){
`%>%` <- dplyr::`%>%`
if (length(list(...)) > 0 && !is.null(...)) {
m <- data %>%
dplyr::select(...)
} else {
m <- data
}
m %>%
{Map(function(x, y){
ifelse(x > 0, y, NA)
}, ., names(.))}
#%>%
# unlist(use.names = FALSE)
}
list2tags <- function(data, ncol = length(unique(na.omit(unlist(data))))){
`%>%` <- dplyr::`%>%`
lapply(data, function(x){
x %>%
matrix(ncol = ncol) %>%
as.data.frame()
}) %>%
dplyr::bind_rows() %>%
{Map(function(x){
stats::setNames(tibble(x = ifelse(is.na(x), 0L, 1L)), unique(na.omit(x)) )
}, .)} %>%
dplyr::bind_cols()
}
library(dplyr)
data.frame(matrix(sample(0:1, 100, T), ncol = 10)) %>%
tags2list()