Я знаю, что очень похожие вопросы задавались ранее, но я до сих пор не получил ответа на свой точный вопрос из этих старых постов. Моя функция 'test' должна выполнять только для столбца 'col' фрейма данных (на самом деле данные из файла .csv) 'x', т.е.
test <- function(x$col){...}
:
test(x$col)
Я знаю, что этот синтаксис не работает. Так что мне нужно сделать:
test <- function(x,col){...}
:
test(x$col)
Но проблема с вышесказанным заключается в том, что, поскольку функции R по своей природе передаются по значению, весь фрейм данных 'x' передается в функцию 'test', что является высокоэффективным способом, особенно с LARGE 'x'. !
Обходной путь:
test <- function(y){...}
:
y <- x$col
test(y)
Но это не хорошо. Я добавляю лишнюю строку кода / вектора для странного явления, для которого я не вижу очевидной причины! Кроме того, это усложняет читабельность кода, поскольку везде в коде, который я использую x$col
для этого столбца.
Есть ли способ отправить только копию столбца (x$col
), используя некоторую комбинацию 'x' и 'col' (и без дополнительной переменной!) В качестве аргумента моей функции 'test' ??
Или кто-то может предложить причину неспособности отправить только столбец в качестве аргумента функции 'test'? Кроме того, является ли вообще неэффективным использование x$col
каждый раз, поскольку он может не находиться в памяти все время?