2011-09-08 25 views
8

Tôi muốn bơm ra một danh sách các đối tượng data.frame() vào tệp csv để tôi có thể làm việc trên nó để trình bày. Tôi thấy rằng nó trả lời với một lỗi:write.csv() một danh sách các dữ liệu có kích thước không đồng đều

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

tôi đã lưu các đầu ra vào một danh sách (tất cả đều có thể được buộc thành df), đây là một ví dụ:

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) 

Mọi hành động nối thêm phải có cùng số cột không?

+0

Vâng, nếu bạn sử dụng 'write.csv'. Tôi nghĩ rằng bạn có thể nhận được vòng này bằng cách sử dụng 'write.table (..., sep =", ", append = TRUE') - nhưng tôi đã không thử nghiệm này gần đây. – Andrie

+1

@Andrie: bạn không thể nối thêm với 'write.csv'. Cũng giống như bạn không thể thay đổi 'col.names',' sep', 'dec', hoặc' qmethod'. –

+0

@JoshuaUlrich Đó là những gì tôi nghĩ tôi đã nói, nhưng rõ ràng ý nghĩa đã bị mất trong bản dịch. – Andrie

Trả lời

13

Đó là cảnh báo chứ không phải lỗi. Bạn không thể thay đổi append=FALSE với write.csv. ?write.csv nói:

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

Sử dụng write.table với sep="," để thay thế.

+0

Ah, cảm ơn Josh, hoàn toàn bỏ lỡ điều đó. –

+0

+1 Yep, đó là những gì tôi có trong tâm trí trong bình luận của tôi cho câu hỏi chính. – Andrie

+0

có hoạt động xung quanh không? Tôi có một vài khách hàng thích để có được những thứ trong excel. Vì vậy, tôi cần phải bơm ra một tập tin excel của kết quả đầu ra (với các yếu tố trong các tế bào hơn là trong tế bào đầu tiên và phải chuyển đổi văn bản thành cột) –

1

Bây giờ bạn có thể xuất khẩu nhiều dataframes trong một CSV đơn sử dụng 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") 

nào sẽ xuất khẩu:

screenshot

.
.

Hoặc, nếu bạn thích để làm điều đó bằng tay, bạn có thể sử dụng sink file:

# 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() 
Các vấn đề liên quan