我有两个不同大小的数据帧要输出到.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)
我试图将它们叠加在一起,但它无法正常工作。有什么建议吗?
答案 0 :(得分: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