从R中的列表生成数据结构

从R中的列表生成数据结构,r,R,我有一个包含6个列表的列表: > dput(ATQ1) list(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0), c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), c(1, 1, 1, 1, 1, 1, 1,

我有一个包含6个列表的列表:

> dput(ATQ1)
list(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
0, 0), c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1), c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1), c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1), c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1), c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1))

我想编写一个简短的程序来命名它们(例如,col1、col2、col3、col4、col5、col6),然后使用这些数据创建一个数据帧,其中每个列表表示数据帧的一列。有人能告诉我怎么做吗?我寻找了一个解决办法,但没有找到。谢谢。

您可以将您的列表命名为
l
,如下所示:

names(l) -> c("A", "B", "C", "D", "E", "F")
然后创建一个
data.frame

> data.frame(l)
   A B C D E F
1  1 1 1 1 1 1
2  1 1 1 1 1 1
3  1 1 1 1 1 1
4  1 1 1 1 1 1
5  1 1 1 1 1 1
6  1 1 1 1 1 1
7  1 1 1 1 1 1
8  1 1 1 1 1 1
9  1 1 1 1 1 1
10 1 1 1 1 1 1
11 1 1 1 1 1 1
12 1 1 1 1 1 1
13 1 1 1 1 1 1
14 0 1 1 1 1 1
15 0 1 1 1 1 1
16 0 1 1 1 1 1
17 0 1 1 1 1 1
18 0 1 1 1 1 1
19 0 1 1 1 1 1
20 0 1 1 1 1 1

正如Sam Mason在评论中已经指出的那样,
as.data.frame
names
是您在这里的朋友,第一个将列表转换为data.frame,第二个允许您命名列。噢,哇!酷!我从来不知道数据帧不需要有列名。看来,一个数据框只是一个大小相同的列表。@JoshuaUlrich看起来是,只是用明显的词进行了搜索,并找到了该帖子的链接……看起来是合理的,如果像OP一样对R的新用户来说有点复杂的话be@SamMason:是的,为了提高效率,这很复杂;但这个问题与其他不太复杂的问题也有很好的联系。我将使用属性,因为这些属性似乎工作得更快,效率更高。