Функция левой стороны с R - PullRequest
0 голосов
/ 26 апреля 2018

В R возможно ли написать функции, которые ведут себя как имена столбцов?
например.Мне нужна функция, скажем, 'foo', которая может использоваться как:
x <- foo("y") # читает содержимое файла "y" в x
или
foo("y") <- x # записывает содержимое xв файл "y"
Как я могу уловить тот факт, что функция является первым аргументом <-?Должен ли я уточнить <- (опасно)?И как заставить следующую работу работать как положено?
x -> foo("y")
... и, конечно, я не хочу двух разных функций (чтение и запись): моя цель - ввести новый синтаксис, вдохновленныйБаза R.

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2018

На самом деле синтаксический анализ DOES поддерживает произвольные функции в качестве LHS присваивания, но эти функции используются для чего-то, что может использоваться само по себе в левой части (например, имя переменной, но не строка или числовая буква), поэтому код:

`foo<-` <- function(x,y,value) set_foo(x,y,value)
 set_foo <- function(x,y,value) UseMethod("set_foo")
 set_foo.data.frame <- function(x,y,value)  {print(x);print(y);print(value);x}

 data(mtcars)
 foo(mtcars,1)<-2

отлично работает, но

foo(0,1)<-2

приведет к ошибке даже при определении set_foo.default.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...