write.csv () список неравных размеров data.frames - PullRequest
8 голосов
/ 08 сентября 2011

Я хотел бы выкачать список объектов data.frame () в CSV-файл, чтобы я мог работать с ним для презентации. Я обнаружил, что он отвечает с ошибкой:

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

Я сохранил выходные данные в список (все из которых можно привести к df), вот пример:

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)

Должно ли каждое действие добавления иметь одинаковое количество столбцов?

Ответы [ 2 ]

13 голосов
/ 08 сентября 2011

Это предупреждение, а не ошибка. Вы не можете изменить append=FALSE с write.csv. ?write.csv говорит:

Попытки изменить ‘append’, ‘col.names’, ‘sep’, ‘dec’ или ‘qmethod’ игнорируются с предупреждением.

Используйте write.table вместо sep=",".

3 голосов
/ 30 января 2018

Теперь вы можете экспортировать несколько фреймов данных в одном CSV, используя 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")

Который будет экспортировать:

screenshot

.
,

Или, если вы предпочитаете делать это вручную, вы можете использовать sink файлы:

# 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...