我想做以下
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])
}
}
但它不起作用。
感谢您的帮助
卡罗尔
答案 0 :(得分:2)
一种方法是使用do.call
:
R> myfun <- function(x) print(x)
R> do.call(paste0("my","fun"), list("foo"))
[1] "foo"
do.call
的第一个参数是函数的名称(这里可以使用paste
),第二个是要传递的参数列表。
答案 1 :(得分: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)
}