打印数据帧列表

时间:2013-03-15 18:56:03

标签: r

我是R的相对新人。我已经搜索了最后两个工作日试图解决这个问题并且失败了。我有一个函数生成的因子列表。我在不同长度的列表中有9个项目。

>summary(list_dataframes)
      Length Class  Mode   
 [1,] 1757   factor numeric
 [2,] 1776   factor numeric
 [3,] 1737   factor numeric
 [4,] 1766   factor numeric
 [5,] 1783   factor numeric
 [6,] 1751   factor numeric
 [7,] 1744   factor numeric
 [8,] 1749   factor numeric
 [9,] 1757   factor numeric

数据样本的一部分:

  

list_dataframes

[[1]]

[1] 1776234_at   1779003_at   1776344_at   1777664_at   1772541_at   1774525_at  

 [[2]]

 [1] 1771703_at   1776299_at   1772744_at   1780116_at   1775451_at   1778821_at  

[7] 1774342_at 

 [[3]]

[1] 1780116_at   1776262_at   1775451_at   1780200_at   1775704_at 

我不确定为什么说Mode是“数字”。单个条目是数字和字母的混合,如“S35_at”。

我想把它变成一个包含9列和1783行的表,而不会产生重复值。 (因此我尝试使用do.call并且它不起作用。我最终得到了一堆乱七八糟的东西。)较短的那些可以在空白区域中具有NA或者是空白的。

我需要能够最终得到一些我可以放入电子表格的内容。

必须有办法做到这一点。谢谢!

我想我最初应该将它添加为数据帧,当我有四列数据时,我只需要一列数据,当我对创建此列表的函数进行子集化时,只创建一列我实际上需要它似乎不再是数据帧。

dput(head(list_dataframes))
list(structure(c(3605L, 5065L, 3663L, 4349L, 1655L, 2700L, 5692L, plus many more
.Label = c("1769308_at", 
"1769311_at", "1769312_at", "1769313_at", "1769314_at", "1769317_at", plus many more
this pattern is repeated nine more times

我要做的是制作一个如下所示的表:

a= xyz,tuv,efg,hij,def
b= xyz,tuv,efg
c= tuv,efg,hij,def

我想要的是一张

的表格
a    b    c
xyz  xyz  tuv
tuv  tuv  efg
efg  efg  hij
hij  NA   NA
NA   NA   NA

NA could be blank as well.

在阅读了关于列表的手册部分之后,我确定我已经生成了一个隐藏的列表列表。它有九个项目,我想要的数据埋下两层,即看到它我必须使用[[1]]。此外,由于R中的某些内容导致单个列数据帧成为一个因素而不是保留数据帧,因此它更加复杂。为了解决它(某种程度),我在我的等式中添加了一个步骤,以便将该因子更改为数据框。

之后,当我使用lapply生成我的结果时,至少因素问题得到了解决。然后,我可以使用以下步骤拉出数据帧。

first <- list_dataframes[[1]]
second <- list_dataframes[[2]]
third <- list_dataframes[[3]]
fourth <- list_dataframes[[4]]
fifth <- list_dataframes[[5]]
sixth <- list_dataframes[[6]]
seventh <- list_dataframes[[7]]
eighth <- list_dataframes[[8]]
nineth <- list_dataframes[[9]]

all_results <- cbindX(first,second,third,fourth,fifth,sixth,seventh, eighth,nineth)

然后我可以使用write.csv编写csv文件,并获得我所追求的正确结果。所以我想我有答案。我的意思是它现在有效。

然而,我仍然认为我错过了使这项工作最佳的方法,即使它现在给了我正确的结果。

1 个答案:

答案 0 :(得分:1)

因子类变量是整数模式的向量,其附加属性是一个字符向量,指定用于显示整数值的标签。我认为将这些绑定在一起的最安全的方法是将因子列转换为字符类,然后转换为merge all=TRUE。为什么不发布一个包含三个数据帧或因子的简单示例...我实际上无法从摘要输出中确定结构...长度为10,9和8的数据在数据中有多少复杂程度?

如果你想使用一组共同的等级制作所有因子,请使用:

 shared_levels <- unique( c( unlist( lapply(list_dataframes) ) ) )
 length(shared_levels)
 new_list <- lapply(list_dataframes, factor, levels=shared_levels)

正如评论中所述,我仍然不明白你想象的是什么样的表格。需要一个具体的例子。