2013-02-16 65 views
2

使用膏()我想这样做下面的函数名创建R中

X = matrix(0, nrow = p, ncol = N) 
p=5 
N=100 
for (i in 1:N) 
{ 
X[1,i] = e1(t[i]) 
X[2,i] = e2(t[i]) 
X[3,i] = e3(t[i]) 
X[4,i] = e4(t[i]) 
X[5,i] = e5(t[i]) 
} 

其中,E1()。 e2(),e3(),e4()和e5()是特定的函数。

我曾尝试下面的代码:

for(j in 1:p) 
{ 
for (i in 1:N) 
{ 
    X[j,i] = as.symbol(paste("e", j, sep = ""))(t[i]) 
} 
} 

但它不工作。

感谢您的帮助

阿玲这样做是使用do.call

+0

我认为,问题不在于你是什么赋予它。您在问如何将字符串转换为函数调用。这些功能已经存在,您不会为它们创建名称。 – 2013-02-17 01:56:02

回答

2

方式一:

R> myfun <- function(x) print(x) 
R> do.call(paste0("my","fun"), list("foo")) 
[1] "foo" 

do.call第一个参数是函数的名称(可以使用paste这里),第二个是要传递的参数列表。

2

你想要的功能get

for(j in 1:p) 
{ 
for (i in 1:N) 
{ 
    X[j,i] = get(paste("e", j, sep = ""))(t[i]) 
} 
} 

如果E1(ETC)是矢量,您可以删除环中的一个:

for (j in 1:p) { 
    X[j,] = get(paste0("e", j))(t) 
} 
+0

非常感谢。 – 2013-02-16 22:27:37