2016-05-03 42 views
0

假设我有R中列表的列表,例如:R写入列表

列表1含有10对坐标(X,Y)

列表2包含20对坐标(X,Y)

...

列表20包含10个对坐标(X,Y)

我想写入一个输出文件(.txt )文件那些列表。在每个列表的末尾,我想添加一个空行来分隔它们。

我已经知道

P2 = as.data.frame(do.call(rbind,P)),如果p是我的名单

的名单将变成一个数据帧。

然后write.table(p2,file =“forest”,row.names = FALSE)将打印每个列表,但没有空格。有人能帮我吗?在这里可以使用“猫”吗,像猫(“”,p)?

在此先感谢!

+0

请补充一点,就是你尝试和编辑与正确的格式你的问题。 –

回答

1

你绝对是在正确的轨道与猫()。下面我创建一个列表(不同大小)。然后,我将每个列表转换为data.frame类对象,然后将其写入文本文件。在每次write.table()调用之后,我使用cat()输入空格(“\ n”)。

这可能应该在您的最后运行(可能会收到一条警告消息,指出它正在打印列名称 - 不用担心这个... txt文件仍然会生成)并将输出一个名为test的txt文件。 txt到你的工作目录(getwd())。

exp_list<-list(list(x=rnorm(10,500,10),y=rnorm(10,500,10)), 
       list(x=rnorm(20,500,10),y=rnorm(20,500,10)), 
       list(x=rnorm(20,500,10),y=rnorm(20,500,10))) 

for(i in 1:length(exp_list)){ 
    write.table(data.frame(exp_list[[i]]),file='test.txt',append=TRUE, row.names=FALSE) 
    cat('\n',file='test.txt',append = TRUE) 
} 
-1

从阿尔曼

使用样本数据
library(dplyr) 

exp_list<-list(list(x=rnorm(10,500,10),y=rnorm(10,500,10)), 
       list(x=rnorm(20,500,10),y=rnorm(20,500,10)), 
       list(x=rnorm(20,500,10),y=rnorm(20,500,10))) 

exp_list %>% 
    lapply(as.data.frame) %>% 
    bind_rows(.id = "ID") %>% 
    mutate(ID = as.numeric(ID)) %>% 
    write.table(sep = " ", row.names = FALSE) 
+1

这实际上并不在工作目录中输出一个txt文件,因此不回答OP的问题。此外,当您将write.table file =参数设置为“testfile.txt”时,它会创建一个txt文件,但数据框不会由空行分隔。 – AOGSTA