2

我想做以下事情

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])
}
}

但它不起作用。

谢谢你的帮助

卡罗尔

4

2 回答 2

2

一种方法是使用do.call

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

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

于 2013-02-16T22:13:41.930 回答
2

你想要的功能get

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

如果 e1 (等)被矢量化,您可以删除其中一个循环:

for (j in 1:p) {
  X[j,] = get(paste0("e", j))(t)
}
于 2013-02-16T22:18:44.453 回答