2014-11-10 5 views
0

У меня есть dataframe под названием returns с разными столбцами, например simple. Я обычно обращаюсь к нему по адресу returns$simple. Теперь мне нужно передать эти столбцы функции. Я пробовал много вещей, которые я нашел здесь на доске (as.formula, parse, paste и т. Д.), И все это не сработало.R - передать строку в формулу для подмножества dataframe

test = function(x) 
{ 
    returns$x 
} 
test(simple) 

ответ

1

Вы можете получить доступ к своим колонкам, используя обозначение скобки. Вот как это сделать:

test = function(x) 
{ 
    returns[,x] 
} 
test("simple") 

Или просто (без использования функции):

returns[, column_name] 
0

Попробуйте

returns[,x]     # a 

или получить столбец идентификатор, с помощью которого.

which(names(returns)==x)  # b 

Другая идея состоит в том, чтобы использовать Grep

grep("^x$", colnames(returns)) # c 
grep("^x$", names(returns)) # d 
+0

@ Давик, спасибо за исправление :) –

0

Вы можете использовать [[ для значений в столбце на основе имени столбца. Если вы не хотите указывать имя столбца при вызове функции, вы должны использовать deparse и substitute.

test <- function(x) 
{ 
    xc <- deparse(substitute(x)) 
    returns[[xc]] 
} 

test(simple) 
Смежные вопросы