2013-03-27 3 views
0

Я новичок в создании классов и методов в R, и я столкнулся с проблемой, о которой я не нашел много документации. Я создал класс, «DataImport», и я пытаюсь добавить метод ниже:Сообщение об ошибке в R: «Аргументы методов() должны быть названы или один именованный список«

DataImport$methods(reducedImport <- function(filePathOne, dataFrame) 
    { 

    } 
) 

Когда я запускаю этот код я получаю следующее сообщение об ошибке:

Error in DataImport$methods(reducedImport <- function(filePathOne, : 
    Arguments to methods() must be named, or one named list 

я был в состоянии добавьте метод непосредственно перед этим, и он работал нормально, но этого нет. Я не совсем понимаю, почему это так, или как это исправить.

+0

Прочтите следующее: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Dason

+0

Благодарим за ответ. Я не уверен, что понимаю это предложение. Я не использую никаких данных или данных, единственный код в дополнение к описанному выше методу, который я пытаюсь запустить, - это определение класса DataImport <- setRefClass («DataImport», fields = c («startDate»)) , Это определение класса и метод в моем исходном сообщении должны составлять класс, и я только пытаюсь определить этот класс, чтобы я мог использовать его в кадре данных и пути к файлу в будущем. Когда я запускаю эти два блока кода, я получаю ошибку, о которой я упоминал. Я не понимаю, как использовать классы в R? – tjnel

+0

Вы должны включить определение этого класса в свой вопрос. – Dason

ответ

1

Как упоминается в комментарии Dason, ваша проблема связана с назначением. Давайте создадим простой пример:

c1 = setRefClass("c1", fields = list(data = "numeric")) 
c1$methods(m1 = function(a) a) 

Теперь быстрый тест:

x = c1$new(data=10) 
x$m1(1) 

Однако

R> c1$methods(m2 <- function(a) a) 
Error in c1$methods(m2 <- function(a) a) : 
    Arguments to methods() must be named, or one named list 

выдает ошибку, которую вы видите. Причина этого в том, что оператор <- - slightly different от оператора =. Это вообще не имеет значения (но оно здесь).