我尝试使用代码将其转换为数据框:
dflist<- as.data.frame(mylist)
我知道我可能创建了错误的列表,但我认为如果我只需要将数字正确转换为数据框,这仍然是可以挽救的。
我的最终目标 是根据它们的索引 (1-30) 绘制数字,我认为首先创建一个数据框来清理它然后绘制会有所帮助。 任何帮助将非常感激。谢谢。
最佳答案
显示的数据是一个列表
。我们可以使用 unlist
并创建一个 data.frame
。根据 OP 帖子中显示的图像,每个 list
元素的 length
为 1。通过执行 unlist
,我们将 list 转换为
到 vector
然后用 data.frame
包裹。
data.frame(ind= seq_along(lst), Col1= as.numeric(unlist(lst)))
或者另一种选择是 stack
在命名 list
元素之后
df1 <- transform(stack(setNames(lst, seq_along(lst))),
values = as.numeric(values))
它给出了一个两列的数据集。由此我们可以做 plot
ting
关于 OP 直接在 list
上调用 as.data.frame
的方法,它确实以不同的方式工作,因为它调用 as.data .frame.list
.例如,如果我们在 vector
上执行 as.data.frame
,它会使用 as.data.frame.vector
as.data.frame(1:5)
# 1:5
#1 1
#2 2
#3 3
#4 4
#5 5
但是,如果我们调用 as.data.frame.list
as.data.frame.list(1:5)
# X1L X2L X3L X4L X5L
#1 1 2 3 4 5
我们得到一个包含“n”列的 data.frame(基于向量的长度)。
假设,我们在列表
上做同样的事情
as.data.frame(as.list(1:5))
# X1L X2L X3L X4L X5L
#1 1 2 3 4 5
它使用as.data.frame.list
。要获取 as.data.frame
的 methods
的完整列表,
methods('as.data.frame')
#[1] as.data.frame.aovproj* as.data.frame.array
# [3] as.data.frame.AsIs as.data.frame.character
# [5] as.data.frame.chron* as.data.frame.complex
# [7] as.data.frame.data.frame as.data.frame.data.table*
# [9] as.data.frame.Date as.data.frame.dates*
#[11] as.data.frame.default as.data.frame.difftime
#[13] as.data.frame.factor as.data.frame.ftable*
#[15] as.data.frame.function* as.data.frame.grouped_df*
#[17] as.data.frame.idf* as.data.frame.integer
#[19] as.data.frame.ITime* as.data.frame.list <-------
#[21] as.data.frame.logical as.data.frame.logLik*
#[23] as.data.frame.matrix as.data.frame.model.matrix
#[25] as.data.frame.noquote as.data.frame.numeric
#[27] as.data.frame.numeric_version as.data.frame.ordered
#[29] as.data.frame.POSIXct as.data.frame.POSIXlt
#[31] as.data.frame.raw as.data.frame.rowwise_df*
#[33] as.data.frame.table as.data.frame.tbl_cube*
#[35] as.data.frame.tbl_df* as.data.frame.tbl_dt*
#[37] as.data.frame.tbl_sql* as.data.frame.times*
#[39] as.data.frame.ts as.data.frame.vector
关于r - R中从列表到数据框的奇怪转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35250512/