将列表矩阵转换为data.frame

将列表矩阵转换为data.frame,r,matrix,dataframe,R,Matrix,Dataframe,我有一个结构,它的形式是: > tbl a_1 a_2 a_3 [1,] "L" "14" "L" [2,] "L" "62" "D" [3,] "H" "0" "L" 实际上,这是一个矩阵: > class(tbl) [1] "matrix" 但是,当我试图将其更改为data.frame时,df的所有条目仅显示数据类型,如下所示: >as.data.frame(tbl, nrow = length(tbl[,1]), ncol = 3, b

我有一个结构,它的形式是:

> tbl

     a_1   a_2  a_3
 [1,] "L"  "14" "L"
 [2,] "L"  "62" "D"
 [3,] "H"  "0"  "L"
实际上,这是一个矩阵:

> class(tbl)
[1] "matrix"
但是,当我试图将其更改为
data.frame
时,df的所有条目仅显示数据类型,如下所示:

>as.data.frame(tbl, nrow = length(tbl[,1]), ncol = 3, byrow = TRUE)

a_1           a_2         a_3
<list>       <list>      <list>
<chr[1]>    <chr[1]>    <chr[1]>
<chr[1]>    <chr[1]>    <chr[1]>
<chr[1]>    <chr[1]>    <chr[1]>
我寻找类似的q,但找不到有同样问题的人。任何建议都会大有帮助


试试这一行:

as.data.frame(apply(tbl, 2, unlist))
或者这个:

tbl2 <- unlist(tbl)
attributes(tbl2) <- attributes(tbl)
DF <- as.data.frame(tbl2)

tbl2能否请您使用
dput
提供您的数据,以便我们能够准确地看到您的数据结构?这是原始数据结构的一个较小版本-我在已修复的列
a2
的数据类型上犯了一个错误。现在它有意义了吗?好的,我把它分解了一点,结果是:
结构(list(“L”、“L”、“H”、“14”、“62”、“0”、“L”、“D”、“L”),.Dim=c(3L,3L),.Dimnames=list(NULL,c(“a_1”、“a_2”、“a_3”))
有时没有信息,运行
str(tbl)
并添加输出以更好地了解您的数据结构结果
str(tbl)
列表9$:chr“L”$:chr“L”$:chr“H”$:chr“14”$:chr“62”$:chr“0”$:chr“L”$:chr“D”$:chr“L”-attr(*,“dim”)=int[1:2]3-attr(*,“dimnames”)=列表2$:NULL.:chr[1:3]“a”\u”
是我在这上面转了太久了!两种选择都很有效。我需要研究
应用
属性
——这两个对我来说都是新的。非常感谢你!!!
as.data.frame(apply(tbl, 2, unlist))
tbl2 <- unlist(tbl)
attributes(tbl2) <- attributes(tbl)
DF <- as.data.frame(tbl2)