我有两个'数据框'我想要附加到单个csv文件中。我知道可以使用写。要附加它们的表,但write.table会垂直附加它们。有没有办法可以水平追加它们?
编辑:两个数据集是7x2(它是常量),Sx7是S是可变的。 S可能非常大,可能高达1000或更多。
Edit2:我希望它们首先与Sx7一样排列,然后是一列空格,然后是7x2。我不希望它们被转置,因为S可能非常大,我希望能够在LibreOffice / Excel中读取它们。
答案 0 :(得分:1)
这绝对是一个快速的黑客攻击。
使用cbind的问题是数据帧的大小不同。解决这个问题的一个快速方法是使它们具有相同的大小,用空的东西填充空白区域,在我的情况下是在NA下面。然后,您可以cbind所有数据帧并将它们作为一个大数据帧输出到文件。这将使它们的外观水平添加,当然还有所有冗余填充物。
#create a list of the dataframes
dfList<-list(df1, df2)
#find the max rows
maxRows<-max(sapply(dfList, nrow))
#define a function that makes all dataframes "cbind-able"
equalRows<-function(df, numRows){
numColumns<-ncol(df)
targetRows<-numRows-nrow(df)
toAppend<-as.data.frame(matrix(rep(NA, numColumns*targetRows), nrow=targetRows, ncol=numColumns))
colnames(toAppend)<-colnames(df)
rbind(df, toAppend)
}
#create our new cbind-able dataframes
newdfList<-lapply(dfList, function(df){
if(nrow(df)==maxRows){
df
}else{
equalRows(df, maxRows)
}
})
#put them all in one for output
dfResult<-newdfList[[1]]
for(i in 2:length(newdfList)){
dfResult<-cbind(dfResult, newdfList[[i]])
}