2013-09-22 3 views
1

Я использую библиотеку, которая имеет функцию f. Эта функция принимает несколько аргументов: объект, фрейм данных и имя столбца в фреймворке данных. Если я назову его вручную, он будет работать без особых проблем. Я называю это так:Использовать имя переменной в качестве аргумента в partialPlot из пакета randomForest

f(my_object, my_dataframe, 'A') 

Однако, если я поместил «A» в переменную, это не сработает! Чтобы уточнить, я просто так:

g = 'A'  
f(my_object, my_dataframe, g) 

И я получаю сообщение об ошибке (выбраны не определенные столбцы). Я попытался разобраться в этом, но не повезло. Если бы кто-нибудь мог помочь, я бы очень признателен.

EDIT: Я использую команду partialPlot в библиотеке randomForest. Вот что я набираю:

partialPlot(r,x,'pH') 

Это работает! Затем я задаю «рН» переменной и попробовать ту же самую функцию:

g = 'pH'  
partialPlot(r,x,g) 

Это не работает, и я получаю следующее сообщение об ошибке:

Error in '[.data.frame'(pred.data, , xname) : undefined columns selected 

можно также проверить, что д что я думаю, что это:

print(g) 
#[1] "pH" 

class(g) 
#[1] "character" 
+0

Вы уверены, что используете '' A'''''''', а не только 'A'? –

+1

В какой библиотеке вы говорите? – unique2

+2

Это может быть аналогичная * интерактивная * функция для 'подмножества', см. Http://stackoverflow.com/q/9860090/1201032 – flodel

ответ

2

Попробуйте

g = quote(pH) 
partialPlot(r,x,g) 

Виновником является следующий фрагмент в RandomForest ::: partialPlot.randomForest

x.var <- substitute(x.var) 
xname <- if (is.character(x.var)) 
    x.var 
else { 
    if (is.name(x.var)) 
     deparse(x.var) 
    else { 
     eval(x.var) 
    } 
} 

Для получения дополнительной информации см stackoverflow.com/q/9860090/1201032


Ранее попробовать (работал только в интерактивном режиме):

partialPlot(r,x,c(g)) должен работа. Написание c(g) вместо g составляет is.name(x.var) возвращение FALSE так eval вместо deparse выполняется.

+0

Это работает в интерактивном режиме, но по какой-то причине он не работает в моем скрипте. Я получаю следующую ошибку: Ошибка в eval (expr, envir, enc): объект 'g' не найден. Звонки: main ... partialPlot -> partialPlot.randomForest -> eval -> eval. Исполнение остановилось. Есть идеи? Спасибо за помощь! Я попробую отладить его ... –

+0

Как вы выполняете свой скрипт? – unique2

+0

Я использую «Rscript ./myscript.r», за которым следуют аргументы аргумента optparse –