Как импортировать файл .R и назначить ему псевдоним?Как импортировать myfile.R как mf - PullRequest
2 голосов
/ 04 апреля 2019

R новичок здесь, который действительно скучает по Python's

import pandas as pd
import my_file_which_is_just_a_file_not_a_package as mf
out = mf.my_cool_function()

Я нашел способ реализовать что-то похожее на первое (присвоение псевдонима пакету), но как это сделать последним, то есть как назначить псевдоним файлу .R (не пакету) Вы импортируете? Например Вы поместили некоторые часто используемые функции в отдельный файл .R или делите свою программу на несколько файлов .R, чтобы сохранить порядок.

NB: это НЕ дубликат вопросов, задающих вопрос о том, как назначить псевдоним пакету - я говорю об отдельных файлах R, а не пакетах.

Я понимаю, что библиотека пространства имен обеспечивает функциональность, аналогичную import as для установленных пакетов:

library(namespace)
registerNamespace('ggp', loadNamespace('ggplot2'))
data(iris)
ggp::ggplot(iris, ggp::aes(x = Petal.Length, y = Sepal.Length)) + ggp::geom_point()

Я также понимаю, что вы можете использовать импорт для импорта только определенных функций из другого файла .R, например, из другого скрипта (не пакета):

import::here(fun_a, fun_b, .from = "other_resources.R")
a <- fun_a(…)

Наконец, вы можете использовать source для загрузки другого скрипта.

Но ничто из этого не затрагивает мою точку зрения об импорте с псевдонимом.

Есть предложения? Спасибо!

EDIT PS Так как меня спросили, я пытаюсь выучить немного R, потому что:

  • Мне любопытно; в прошлый раз я попробовал R перед тем как "революция"; Я ненавидел это в то время, находил это неясным, загадочным и с очень плохой документацией. Все говорят, как прекрасен Tidyverse, поэтому мне любопытно дать R еще одну попытку
  • Я вряд ли перенесу весь свой рабочий процесс с Python на R, но могут быть определенные вещи, которые я мог бы захотеть сделать в R. Например, чтение больших файлов Excel и экспорт в SQL; обе эти задачи намного быстрее в R. Теперь я могу импортировать большие файлы xlsx в SQL за меньшее время, затем заставить Python читать из SQL и оставить оставшуюся часть моего рабочего процесса без изменений. Я написал об этом здесь , где я также объяснил, почему CSV - не лучший вариант для меня (пожалуйста, не возвращайтесь со словами «используйте CSV»).

1 Ответ

2 голосов
/ 04 апреля 2019

Звучит так, будто вы хотите определить среду и добавить в нее файл. Я считаю sys.source полезным для этого.

У меня есть пример файла с именем "my_test_script.R", который содержит:

MYCONSTANT <- 3

testfun <- function(val){
  print(val)
}

testfun2 <- function(x){
  return(x + MYCONSTANT)
}

Теперь пример сеанса чтения этого файла в среду, чтобы я мог «псевдонимить» информацию внутри него как «tstEnv»:

> tstEnv <- new.env()
> sys.source(file = "my_test_script.R", envir = tstEnv, toplevel.env = tstEnv)
> tstEnv$testfun("it works")
[1] "it works"
> tstEnv$testfun2(0) 
[1] 3
> tstEnv$testfun2(1)
[1] 4
> tstEnv$MYCONSTANT # I can read my constants too
[1] 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...