将列表导出到R中的CSV或TXT文件中

han*_*ick 31 export r

我很抱歉问这个问题.我和R非常相似.我知道有很多线程与同一个问题有关.据我所知,如果其中一个元素是一个列表,我们就无法导出表格,但我无法解决我的问题.所以,我在R中有一个列表,我想将其导出为CSV或TXT文件.以下是执行此write.table命令时收到的错误消息:

write.table(mylist,"test.txt",sep=";")

Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol,  : 
unimplemented type 'list' in 'EncodeElement'
Run Code Online (Sandbox Code Playgroud)

这是我列表的第一个元素:

$f10010_1
$f10010_1$mots
 [1] X16               ESPRESSO          TDISC             TASSIMO          
 [5] CARTE             NOIRE             A                 LAVAZZA          
 [9] MALONGO           MIO               MODO              123              
[13] CAPSULES          DOSES             78G               LONG             
[17] SPRESSO           CAFE              120G              CLASSIC          
[21] 104G              128G              AROMATIQUE        INTENSE          
[25] 112G              156G              520G              5X16             
[29] PROMO             TRIPACK           X24               126G             
[33] 16                4X16              APPASSIONATAMENTE APPASSIONATEMENTE
[37] BRESIL            CAPSUL            COLOMBIE          CORSE            
[41] CREMOSAMENTE      DELICATI          DELIZIOSAMENTE    DIVINAMENTE      
[45] DOLCEMENTE        EQI               GRAND             GRANDE           
[49] GT                GUATEMALA         HAITI             INTENSAMENTE     
[53] ITALIAN           MAGICAMENTE       MERE              MOKA78G          
[57] PETITS            PRODUCT           PURSMATIN         RESERVE          
[61] RISTRETO          SOAVEMENTE        STYLE             X36              
64 Levels: 104G 112G 120G 123 126G 128G 156G 16 4X16 520G 5X16 78G ... X36

$f10010_1$nblabel
 [1] 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
[27] 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
[53] 32 32 32 32 32 32 32 32 32 32 32 32
Levels: 32

$f10010_1$Freq
 [1] 18 16 16 15 14 14  9  9  9  9  9  8  8  8  7  7  7  6  5  5  3  3  3  3  2  2
[27]  2  2  2  2  2  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
[53]  1  1  1  1  1  1  1  1  1  1  1  1

$f10010_1$pct
 [1] 0.56250 0.50000 0.50000 0.46875 0.43750 0.43750 0.28125 0.28125 0.28125
[10] 0.28125 0.28125 0.25000 0.25000 0.25000 0.21875 0.21875 0.21875 0.18750
[19] 0.15625 0.15625 0.09375 0.09375 0.09375 0.09375 0.06250 0.06250 0.06250
[28] 0.06250 0.06250 0.06250 0.06250 0.03125 0.03125 0.03125 0.03125 0.03125
[37] 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125
[46] 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125
[55] 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125
[64] 0.03125
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助!

Eco*_*Tom 36

我认为简单的方法是使用capture.output,因此;

capture.output(summary(mylist), file = "My New File.txt")
Run Code Online (Sandbox Code Playgroud)

简单!

  • 如果文件很大,则不会捕获完整的文件 (5认同)
  • 10000行是限制.也许有办法改变这一点 (3认同)
  • 粗略地查看“?”文件,我在“capture.output”或用于扩展限制的全局选项中看不到任何内容。如果其他人发现了什么,最好知道。希望该方法对某些人仍然有用。 (2认同)

Lyz*_*deR 18

所以基本上你有一个列表列表,mylist是主列表的名称,第一个元素$f10010_1是打印出来的(其中包含4个列表).

我认为最简单的方法是使用lapply添加dataframe(假设主列表的每个元素中的每个列表(如列表中的内容$f10010_1)具有相同的长度):

lapply(mylist, function(x) write.table( data.frame(x), 'test.csv'  , append= T, sep=',' ))
Run Code Online (Sandbox Code Playgroud)

上面将转换 $f10010_1为数据帧,然后对每个其他元素执行相同操作,并在'test.csv'中将一个添加到另一个下面

您还可以?write.table在控制台上键入以检查在将表写入csv文件时需要传递的其他参数,例如,是否需要行名称或列名等.


O.r*_*rka 6

cat(capture.output(print(my.list), file="test.txt"))

来自R:将列表导出并导入到 .txt 文件 /sf/users/129897421/是唯一对我有用的东西。这会输出文本文件中的列表列表


use*_*767 6

使用sink功能:

sink("output.txt")
print(mylist)
sink()
Run Code Online (Sandbox Code Playgroud)

  • 如果列表包含大于 10 行的 tbls,则每行 11+ 的行将丢失:# ...还有 263 行 (2认同)