当前 table 中的单词列表,分为四列
Present list of words in table, separate into four columns
我有一个包含 140 个单词的列表,我想在 table 中按字母顺序显示这些单词。我不希望它们显示为一个超长列表,而是在适当的地方分成几列(例如,也许四列?)我使用 flextable 但我不太确定如何做这个......
复制我拥有的数据类型和格式:
library(stopwords)
library(flextable)
word <- as_tibble(head(data_stopwords_smart$en, n=140))
然后我将其放入 table,但它给出了一个很长的列
wordtable <- flextable(word) %>%
set_header_labels(rows = "") %>%
autofit()
一种方法是将词向量分成 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)
我有一个包含 140 个单词的列表,我想在 table 中按字母顺序显示这些单词。我不希望它们显示为一个超长列表,而是在适当的地方分成几列(例如,也许四列?)我使用 flextable 但我不太确定如何做这个......
复制我拥有的数据类型和格式:
library(stopwords)
library(flextable)
word <- as_tibble(head(data_stopwords_smart$en, n=140))
然后我将其放入 table,但它给出了一个很长的列
wordtable <- flextable(word) %>%
set_header_labels(rows = "") %>%
autofit()
一种方法是将词向量分成 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)