我是 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
我不确定为什么它说模式是“数字”。各个条目是数字和字母的混合,例如“S35_at”。
我想把它变成一个九列和 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 文件并获得我想要的正确结果。所以我想我有我的答案。我的意思是它现在确实有效。
但是,我仍然认为我在使这项工作达到最佳状态时遗漏了一些东西,即使它现在给了我想要的正确结果。