如何将列表转换为数据框,同时将其标题保留在R

时间:2016-10-25 16:26:45

标签: r dataframe jupyter-notebook

我有一个名为mylist的列表,其中除了标题之外还有108行。我尝试将其转换为数据帧,并使用以下命令成功运行

df <- data.frame(matrix(unlist(mylist), nrow=108, byrow=F))

但是,我的列表(mylist)中每个矩阵的标题尚未在我的新数据帧df中定义。

names(df)

"X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10" "X11" "X12" "X13" "X14" "X15" "X16" "X17" "X18" "X19" "X20" "X21" "X22" "X23" "X24" "X25" "X26" "X27" "X28" "X29" "X30" "X31" "X32" "X33" "X34" "X35" "X36"

mylist看起来像是这样

head(mylist[[1]])

      RAmi         MDaf
1   11.806405   -3.588567
2   7.711101    -9.721415
3   2.315104    11.217575
4   20.372999   -2.267938
5   22.279704   -1.668082
6   13.57909    20.67355



head(mylist[[2]])

          Tomi         Rahaf
    1     325          -3
    2      71          -9
    3      2           11
    4     20.999      -22
    5      22         -16
    6     139         2065

这仅适用于head(mylist[[i]])i=1,但i = 1,2,3,...,18

存在相似之处

我想要的是将它们全部放在一个数据帧中。它工作正常,但我的标题有问题

我希望有人可以帮助我理解如何这样做。 谢谢

1 个答案:

答案 0 :(得分:0)

将数据帧列表转换为一个数据帧似乎存在问题。因此,最好从一开始就使用一个数据帧。

例如,在我的情况下,我导入了原始数据

#data1=read.csv(file.choose(), header=F)
data1=read.csv

然后我开始分析我的数据。然后我编写了一个代码来生成数据框,如

# Here we are extracting the data which we wish to have
#iterations=nrow(data1) #Check the number of rows

listOfDataFrames <- vector(mode = "list", length = 18)   # define a dataframe with length
#mylist <- list() #create an empty list
for (k in 0:17)
{
    j=18 # from 14 i.e. switzerland this is not true anymore 
    if ((k>=14) && (k<16))
    {
        f=7+j*k
        s=3+j*k

    }  else if (k<14)
    {
        s=7+j*k-4
        f=7+j*k
    } else if (k==16)
    {
        f=j*k+5
        s=f+4
    } else if (k==17)
    {
        f=304
        s=301
    }
    b= data1[,c(f,s)] 
    #mylist[[k+1]] <- b
    listOfDataFrames[[k+1]]=b
}
#df <- data.frame(matrix(unlist(mylist), nrow=108, byrow=F))

这允许我将所有数据与标题

一起放入一个数据框中
df=do.call("cbind", listOfDataFrames)
head(df)