将列表矩阵转换为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)