如何将列表转换为数据框,同时在 R 中保留其 headers
How to convert a list into a data frame while keeping its headers in R
我有一个名为 mylist
的列表,其中除了 headers 之外还有 108 行。我尝试将其转换为数据框,并使用以下命令成功运行
df <- data.frame(matrix(unlist(mylist), nrow=108, byrow=F))
但是,我的列表 (mylist) 中每个矩阵的 headers 尚未在我的新数据框 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
也存在类似的情况
我想要的是将它们全部相邻地放在一个数据框中。它运行良好,但我的标题有问题
我希望有人能帮助我理解如何这样做。
谢谢
似乎在将一列数据帧转换为一个数据帧时出现问题。因此,最好从一开始就使用一个数据框。
例如,在我的例子中,我导入了原始数据
#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))
这让我可以将所有数据与 headers
一起放入一个数据框中
df=do.call("cbind", listOfDataFrames)
head(df)
我有一个名为 mylist
的列表,其中除了 headers 之外还有 108 行。我尝试将其转换为数据框,并使用以下命令成功运行
df <- data.frame(matrix(unlist(mylist), nrow=108, byrow=F))
但是,我的列表 (mylist) 中每个矩阵的 headers 尚未在我的新数据框 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
我想要的是将它们全部相邻地放在一个数据框中。它运行良好,但我的标题有问题
我希望有人能帮助我理解如何这样做。 谢谢
似乎在将一列数据帧转换为一个数据帧时出现问题。因此,最好从一开始就使用一个数据框。
例如,在我的例子中,我导入了原始数据
#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))
这让我可以将所有数据与 headers
一起放入一个数据框中df=do.call("cbind", listOfDataFrames)
head(df)