从R中的列表生成数据结构
我有一个包含6个列表的列表:从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,
> 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:是的,为了提高效率,这很复杂;但这个问题与其他不太复杂的问题也有很好的联系。我将使用属性,因为这些属性似乎工作得更快,效率更高。