r-将变异推广到tibble的所有列



我想将这行代码推广到tibble:的所有列

starwars_with_species_as_last_column <- starwars %>% 
select(1:11) # not interested in generalising this
starwars_with_species_as_last_column %>% 
transmute(text = str_c("gender_", gender, " homeworld_", homeworld, "n", species))

因此,我想到的是一个函数,它将一个具有n列的tibble作为输入,并应用n-1次col1name_col1content、col2name_col2content的串联,最后一次应用与最后一列不同的串联。

我认为我可以使用传统的if语句,在所有列上迭代。但如果不按风格来做会好得多。我想这里需要purrr,但我做不到。

此外,我肯定需要准引号来获得每次列内容之前的列名,例如gender_a阳性。

以下是使用gatherpaste的可能方法:

starwars %>%
select(1:11) %>%
mutate(row = 1:n()) %>% 
gather(coln, value, -row) %>%
group_by(row) %>%
summarise(
text = paste(
paste(coln[-n()], value[-n()], sep = "_", collapse = "_"), 
"n",
paste(last(coln), last(value), sep = "_")
)
)

相关内容

  • 没有找到相关文章

最新更新