R在R中编写列表列表(.txt),并在列表之间使用空格

R Writing list of lists (.txt) with spaces between them in 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)将打印每个列表,但不带空格。有人能帮我吗?是否可以像cat("",p)一样在此处使用" cat"?

预先感谢!


使用cat(),您肯定走在正确的Rails上。在下面,我创建了一个列表列表(大小不一)。然后,在将每个列表转换为data.frame类对象之后,我遍历每一个将其写入文本文件。在每个write.table()调用之后,我使用cat()输入一个空格(" \\
")。

这可能会在您的终端上运行(可能会收到一条警告消息,提示它正在打印列名-不用担心...该txt文件仍会生成),并会输出一个名为test.txt的txt文件到您的工作目录(getwd())。

1
2
3
4
5
6
7
8
9
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('\
',file='test.txt',append = TRUE)  
}

使用来自Arman的样本数据

1
2
3
4
5
6
7
8
9
10
11
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)