В R, как можно выбрать и применить элемент вектора функций? - PullRequest
3 голосов
/ 25 августа 2010

У меня вопрос R - я хочу создать вектор функций, а затем иметь возможность вызывать одну из функций по имени. Тем не менее, когда я использую это имя, я хочу использовать тег, который сопоставляется с этим именем, чтобы я мог случайно выбрать имя, которое использовал, без необходимости изменения кода. Например:

#define tag
tag<-"F"
#define functions
f <- function(x) print(x^2)
g <- function(x) print(x^3)
#define vector
fs<-c(f,g)
names(fs)<-c("F", "G")
#create input data
x<-5
fs$F(x)
#this gives the desired output but I want to use tag
#that is, I want syntax which uses tag, so that which element I use from fs is flexible until tag is defined
#e.g. I had hoped the following would work, but it doesn't
fs[tag](x)

Есть предложения?

1 Ответ

5 голосов
/ 25 августа 2010

с этой частью вашего кода

#define vector
fs<-c(f,g)
names(fs)<-c("F", "G")

вы создали список (попробуйте class (fs) или str (fs))

, поэтому индексирование вашей последней строки должно быть измененоto:

fs[[tag]](x)

просто поэкспериментируйте с индексами, чтобы почувствовать структуру.(например, посмотрите на fs, fs[1], fs[[1]] и т. д.)

...