0

我有两个不同大小的数据框,我想将它们输出到 .txt 文件中。我一直在使用 write.table 函数,但我只能在 .txt 文件中输出一个。

dataframe1=data.frame(x=c(1:10), y=c(1:10), z=c(1:10))
dataframe2=data.frame(a=c(1:5), b=c(1:5)) 
write.table( C(dataframe1,dataframe2),
             file = "dataframes.txt", 
             append = F,
             sep = ",",
             row.names = F,
             col.names = F,
             na="",
             quote = F)

我试图让它们显示为堆叠在一起,但它不起作用。有什么建议么?

4

1 回答 1

0

您的代码中有一些问题。

首先,C(dataframe1,dataframe2) 会产生错误,因为您使用了大写字母 C。

其次,c(dataframe1,dataframe2) 输出一个包含 5 个项目的列表。这不是数据框或矩阵。保存时,这将被强制转换为矩阵。任何缺少数据的行都将自动填充,这可能是您不想要的。这将导致您的代码输出:

1,1,1,1,1
2,2,2,2,2
3,3,3,3,3
4,4,4,4,4
5,5,5,5,5
6,6,6,1,1
7,7,7,2,2
8,8,8,3,3
9,9,9,4,4
10,10,10,5,5

这里的问题是您试图连接具有不同列数的两个不同数据帧。您可以将它们组合成一张大表并保存。但请注意,任何缺失的行数据都可能会被自动填充到您不想要的数据中(a 和 b 只有 5 行,而 xyz 有 10 行)。

write.table( cbind(dataframe1,dataframe2),
              file = "dataframes.txt", 
              append = F,
              sep = ",",
              row.names = F,
              col.names = T,
              na="",
              quote = F)

这将输出:

x,y,z,a,b
1,1,1,1,1
2,2,2,2,2
3,3,3,3,3
4,4,4,4,4
5,5,5,5,5
6,6,6,1,1
7,7,7,2,2
8,8,8,3,3
9,9,9,4,4
10,10,10,5,5

或者,如果您真的希望它们彼此叠加,您可以使用单独的调用并打开附加。

write.table( dataframe1,
              file = "dataframes.txt", 
              append = F,
              sep = ",",
              row.names = F,
              col.names = T,
              na="",
              quote = F)
write( "\n Next Dataframe \n", file = "dataframes.txt", append = T)
write.table( dataframe2,
              file = "dataframes.txt", 
              append = T,
              sep = ",",
              row.names = F,
              col.names = T,
              na="",
              quote = F)

Which will output: 
x,y,z
1,1,1
2,2,2
3,3,3
4,4,4
5,5,5
6,6,6
7,7,7
8,8,8
9,9,9
10,10,10

 Next Dataframe 

a,b
1,1
2,2
3,3
4,4
5,5
于 2017-11-14T21:25:23.007 回答