2011-09-08 35 views
8

Bir csv dosyasına data.frame() nesnelerinin bir listesini pompalamak istiyorum, böylece sunum için üzerinde çalışabilirim. Bunun bir hata ile yanıtlarken oluyor bulma yaşıyorum:write.csv() Eşit boyutta olmayan bir data.frames listesi

outputs <- list() 
outputs$fivenum <- fivenum(rnorm(100)) 
outputs$summary <- as.data.frame(as.vector(summary(rnorm(100)))) 

tmp <- lapply(outputs, as.data.frame) 

write.csv(tmp, file="Output.csv",append=T) 

: Bir liste (hepsi bir df coerced bulabilir) çıkışları kaydettiğiniz

In write.csv(tmp[i], file = "Output.csv", append = T) : 
    attempt to set 'append' ignored 

, işte size bir örnek Her ekleme eyleminin aynı sayıda sütuna sahip olması gerekiyor mu?

+0

Evet, 'write.csv' kullanırsanız. Bunu "write.table (..., sep =", ", append = TRUE") kullanarak alabilirsiniz - ama bunu yakın zamanda test etmedim. – Andrie

+1

@Andrie: "write.csv" ile ekleyemezsiniz. Tıpkı "col.names", "sep", "dec" veya "qmethod" değiştiremediğiniz gibi. –

+0

@JoshuaUlrich Dediklerimi düşündüğüm şeydi, ama çeviride anlam kaybolacaktı. – Andrie

cevap

13

Bu bir uyarıdır, bir hata değil. append=FALSE'u write.csv ile değiştiremezsiniz. ?write.csv diyor ki:

Attempts to change ‘append’, ‘col.names’, ‘sep’, ‘dec’ or ‘qmethod’ are ignored, with a warning.

Kullanım yerine sep="," ile write.table.

+0

Ah, teşekkürler Josh, bunu çok özledim. –

+0

+1 Evet, ana soruya yaptığım yorumda aklımda olan buydu. – Andrie

+0

etrafında bir iş var mı? Excel'de bir şeyler almak isteyen birkaç müşterim var. Bu yüzden çıktıların bir excel dosyasını (ilk hücreden ziyade hücrelerdeki öğelerle ve sütunları metne dönüştürmek zorunda olan öğelerle) dışarı pompalamak zorundayım. –

1

Artık ihraç edecek Hangi sheetr

install.packages("devtools") 
library(devtools) 

# Install package from github 
install_github('d-notebook/sheetr') 
library(sheetr) 

# Create a list of dataframes 
iris_dataframe = list() 
iris_dataframe[["Setosa subset"]] = head(iris[iris$Species == "setosa",]) 
iris_dataframe[["Versicolor subset"]] = head(iris[iris$Species == "versicolor",]) 

# Write the list of dataframes to CSV file 
write_dataframes_to_csv(iris_dataframe, "exmaple_csv.csv") 

kullanarak tek CSV birden dataframes verebilirsiniz:

screenshot

.
.

Veya el ile yapmak isterseniz, kullanabileceğiniz sink dosyaları:

# Sample dataframes: 
df1 = iris[1:5, ] 
df2 = iris[20:30, ] 

# Start a sink file with a CSV extension 
sink('multiple_df_export.csv') 

# Write the first dataframe, with a title and final line separator 
cat('This is the first dataframe') 
write.csv(df1) 
cat('____________________________') 

cat('\n') 
cat('\n') 

# Write the 2nd dataframe to the same sink 
cat('This is the second dataframe') 
write.csv(df2) 
cat('____________________________') 

# Close the sink 
sink() 
İlgili konular