#r
#r
Вопрос:
Существует ли простая однострочная функция для копирования одного фрейма данных из одной папки проекта в другую? (Windows) Т.е. Не экспортировать df в txt или csv, а затем импортировать.
Комментарии:
1. в RStudio вы можете удалить все данные в среде, кроме той, которая вам нужна, используя этот код
rm(list=setdiff(ls(), "x"))
, затем сохранить эти данные, затем открыть любые другие данные, а затем открыть вновь сохраненные данные, поэтому оба должны быть в среде, которые можно сохранить в 1 файл.2. Хорошо. Поддержал ваш вопрос и комментарий.
Ответ №1:
Я полагаю, вы имеете в виду, что хотите сохранить данные в файле рабочей области, который хранится .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"
Ответ №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.