Есть ли простая однострочная функция для копирования одного датафрейма из одной папки проекта в другую? (Windows) Т.е. не экспортируя df в txt или csv, а затем импортируя в папку.

SteveM

Ответов: 2

Ответы (2)

Если файл еще не загружен в память в R, можно использовать file.copy() для копирования файла из одного каталога в другой. Мы скопируем один из CSV-файлов Pokemon из каталога проекта PokemonData в подкаталог datascience проекта data.

getwd()
# show the files in "from" directory
list.files(path="../PokemonData/",pattern="*.csv")
# show the files in "to" directory matching pattern of gen0?.csv
list.files(path="./data/",pattern="^gen0*")

file.copy("../PokemonData/gen01.csv",
          "./data/gen01.csv")

# show the files in "to" directory matching pattern of gen0?.csv
list.files(path="./data/",pattern="^gen0*")

... и вывод:

> getwd()
[1] "/Users/lgreski/gitrepos/datascience"
> # show the files in "from" directory
> list.files(path="../PokemonData/",pattern="*.csv")
[1] "gen01.csv"   "gen02.csv"   "gen03.csv"   "gen04.csv"   "gen05.csv"   "gen06.csv"  
[7] "gen07.csv"   "gen08.csv"   "Pokemon.csv"
> # show the files in "to" directory matching pattern of gen0?.csv
> list.files(path="./data/",pattern="^gen0*")
character(0)
> 
> file.copy("../PokemonData/gen01.csv",
+           "./data/gen01.csv")
[1] TRUE
> 
> # show the files in "to" directory matching pattern of gen0?.csv
> list.files(path="./data/",pattern="^gen0*")
[1] "gen01.csv"

Такая же процедура работает с файлом сохранения R.

Я предполагаю, что вы хотите сохранить данные в файл рабочей области, который находится в .RData в папке проекта.

На самом деле это просто внешнее представление объектов, которые были в вашей рабочей области, когда вы закрывали проект в последний раз. Они просто записываются на диск в файл .RData.

Представьте, что у вас есть проект Project1, который содержит один кадр данных с именем df1.

df1 <- mtcars

Когда вы закроете Project1, df1 будет записан в .RData.

Представьте, что вы работаете в Project2, где у вас есть второй фрейм данных, df2:

df2 <- iris

Вы можете загрузить файл Project1 .RData в новую среду, используя load():

Project1 <- new.env()
load("~/Project1/.RData",env = Project1)

Теперь вы можете назначить df2 в эту среду:

assign("df2", df2, envir = Project1)
ls(envir = Project1)
[1] "df1" "df2"

И наконец, вы можете записать содержимое этой среды обратно в каталог первого проекта:

save(list = ls(all.names = TRUE, envir = Project1),
     file = "~/Project1/.RData", envir = Project1)

Когда вы снова откроете Project1, df2 должен быть загружен:

ls()
[1] "df1" "df2"

2022 WebDevInsider