Представлен список слов в таблице, разделенный на четыре столбца.

У меня есть список из 140 слов, которые я хотел бы отобразить в таблице в алфавитном порядке. Я не хочу, чтобы они отображались как один супер длинный список, а скорее разбивались на столбцы, где это уместно (например, может быть, четыре столбца?). Я использую flextable, но я не совсем уверен, как это сделать…

Воспроизведите тип данных, которые у меня есть, и формат:

install.packages("stopwords")
library(stopwords)
word<-as_tibble(head(data_stopwords_smart$en, n=140))

затем я помещаю его в таблицу, но он дает один очень длинный столбец

wordtable<-flextable(word) %>%
 set_header_labels(rows = "") %>%
  autofit() 
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Один из способов сделать это — разделить вектор слов на N секций и установить каждую в виде столбца во фрейме данных. Затем просто установите имена столбцов пустыми, кроме первого. В приведенном ниже примере я сделал это вручную, но процесс должен быть относительно простым для автоматизации, если вы заранее не знаете, какой длины будет вектор.

word <- head(data_stopwords_smart$en, n=140)
word <- data.frame(value1=word[1:35],
                   value2=word[36:70],
                   value3=word[71:105],
                   value4=word[106:140])

wordtable <- flextable(word) %>%
  set_header_labels(value1="Value",
                    value2=NA,
                    value3=NA,
                    value4=NA) %>%
  autofit() 

Обновлять:

Вот функция, которую я придумал, которая автоматизирует процесс. Вам просто нужно указать вектор и количество столбцов, на которые вы хотите его разбить.

flextable_ncol <- function(words, ncol){
  # Split into N chunks
  word.ls <- split(words, rep(seq_along(words), each=ceiling(length(words)/ncol))[1:length(words)])
  # put NAs into chuncks to make all chuncks equal length
  if (length(word.ls[[length(word.ls)]]) < length(word.ls[[1]])){
    word.ls[[length(word.ls)]] <- c(word.ls[[length(word.ls)]], 
                                    rep(NA, length(word.ls[[1]]) - length(word.ls[[length(word.ls)]])))
  }

  # make into a data frame
  word.df <- as.data.frame(do.call(cbind, word.ls))
  # Get column names
  col.names <- c('Value', rep(NA, ncol-1))
  names(col.names) <- names(word.df)
  # make table
  wordtable <- flextable(word.df)
  wordtable <- set_header_labels(wordtable, values=col.names)
  return(wordtable)
}

Вы можете использовать это так

word <- head(data_stopwords_smart$en, n=140)
flextable_ncol(word, 8)

Другие вопросы по теме