首页 > 解决方案 > 使用标签作为新列的值将列表转换为数据框(使用 R)

问题描述

我有一个这样的列表:

require(tidyverse)
months <- c("january", "february", "march", "october", "december") 
weekdays <- c("Sunday", "Monday", "Tuesday")
seasons <- c("Summer", "Winter", "Fall", "autumn")
timeWords_list <- tibble::lst(months,  weekdays, seasons)

我想将此列表转换为两列-data.frame:我需要列表的所有值都在第一列并且标签是第二列的值

结果应该是这样的:

df <- data.frame(first_column  = c("january", "february", "march", "october", "december", "Sunday", "Monday", "Tuesday", "Summer", "Winter", "Fall", "autumn"), 
                 second_column = c("months", "months", "months", "months", "months", "weekdays", "weekdays" ,"weekdays", "seasons", "seasons", "seasons", "seasons"))

第二列可以是字符串或因子,但应对应于列表的标签。请注意,列表可能具有不同的大小,并且其元素可能具有不同的长度。

标签: rdata-transform

解决方案


一个简单的选择stackbase R

df1 <- stack(timeWords_list)
names(df1) <- c("first_column", "second_column")

推荐阅读