0

このコード行をティブルのすべての列に一般化したいと思います。

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列のティブルを受け取り、n-1回の連結col1name_col1content、col2name_col2content、および最後の列との別の連結を適用する関数を考えています。

従来の if ステートメントを使用して、すべての列を反復処理できると思います。しかし、整頓されたスタイルで行う方がはるかに優れています. ここpurrrで必要だと思いますが、うまくいきません。

また、gender_masculine など、列の内容の前に列名を毎回取得するには、必ず準引用符が必要です。

4

1 に答える 1

0

gatherandを使用した可能なアプローチは次のpasteとおりです。

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 = "_")
    )
  )
于 2021-11-28T15:26:32.017 に答える