Я кладу вместе функция R, которая занимает некоторое неопределенное вход через ...
аргумента, описанным в docs как: специальной переменнойРабота с «...» вход в функции R
«...» длина аргумента ***
Идея состоит в том, что пользователь вводит здесь несколько имен столбцов, каждый из которых относится к набору данных, также указанному пользователем. Затем эти столбцы будут перекрестно табулированы по сравнению с зависимой переменной на tapply
. Функция состоит в том, чтобы возвращать таблицу (независимая переменная x независимая переменная).
Таким образом, я попытался:
plotter=function(dataset, dependent_variable, ...)
{
indi_variables=list(...); # making a list of the ... input as described in the docs
result=with (dataset, tapply(dependent_variable, indi_variables, mean); # this fails
}
Я полагал, что это должно работать как tapply может взять список в качестве входных данных. Но это не так («Ошибка в использовании ... аргументы должны иметь такую же длину»), и я думаю, что это потому, что indi_variables
- это список строк. Если я ввожу содержимое списка вручную и не оставляю кавычки, все работает отлично.
Однако, если пользователь подает функцию, имена столбцов не являются строками, R будет интерпретировать их как имена переменных; и я не могу понять, как преобразовать список indi_variables
в правильном направлении, но безуспешно пытаясь что-то вроде этого:
indi_variables=lapply(indi_variables, as.factor)
Так мне интересно,
- Что вызывает описанные выше ошибки? Является ли моя интерпретация правильной?
- Как можно преобразовать список, созданный с помощью
...
в правильном направлении? - Есть ли лучший способ сделать это, во входном или в исполнении
tapply
?
Любая помощь очень ценится!
Вы, вероятно, следует прочитать [это] (http://adv-r.had.co .nz/Computing-on-the-language.html) в книге Хэдли (читайте ее медленно и несколько раз, это сложная тема). – joran