Экспорт нескольких фреймов данных в CSV-файлы с использованием R - PullRequest
2 голосов
/ 07 апреля 2020

Я бы хотел экспортировать несколько кадров данных в виде отдельных файлов CSV в рабочий каталог с помощью al oop, а не записывать все имена

##Sample data frame

employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
d30 <- data.frame(employee, salary, startdate)

##Creating a few of the same name for illustrative purposes
d39 <- data.frame(employee, salary, startdate)
d40 <- data.frame(employee, salary, startdate)

for (list in c(d30,d39)){
  write.csv(list, file="list.csv", row.names = FALSE)
}

Очевидно, я совершенно не прав. Но я не могу понять, как это сделать.

Ответы [ 3 ]

3 голосов
/ 07 апреля 2020

Перебирать имена фреймов данных. Мы предполагаем, что все имена начинаются с d и имеют длину 3. Измените шаблон, если нет, или сразу установите nms, если вы их знаете. Мы также делаем вторую проверку, что имена являются фреймами данных, но вы можете пропустить эту проверку, если уверены, что нет объектов, которые не являются фреймами данных и имеют имя, соответствующее шаблону.

nms <- ls(pattern = "^d..$")
for(nm in nms) {
  X <- get(nm)
  if (is.data.frame(X)) {
    filename <- paste0(nm, ".csv")
    message("writing out ", filename)
    write.csv(X, file = filename, row.names = FALSE)
  }
}
0 голосов
/ 07 апреля 2020

Данные

employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))

Код:

# create a new environment
myenv <- new.env()
# create data frames inside the environment
myenv$d30 <- data.frame(employee, salary, startdate)
myenv$d40 <- data.frame(employee, salary, startdate)

# get data from environment and write to files.
for (list in mget(ls(envir = myenv), envir = myenv)){
  write.csv(list, file="list.csv", row.names = FALSE)
}
0 голосов
/ 07 апреля 2020
i <- 1

dfs <- list(d30, d39)

for (df in dfs){
  filename <- paste0("list", " ", i, ".csv")
  write.csv(list, file=filename, row.names = FALSE)
  i <- i + 1
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...