对此循环进行矢量化:将函数应用于子索引?

时间:2011-03-15 23:43:09

标签: r vectorization

有没有办法对以下内容进行矢量化?

# x: some vector
# index: some vector of indeces
n <- length(index)
y <- rep(NA, n)
for (i in 1:n) {
  y[i] = myfunction(x[1:index[i])
}

基本上,我想将myfunction应用于向量x的各个子集。看起来似乎没有构建apply函数来处理这个问题。

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你的目标,但是如果你想从x向量得到第一个index - es个元素,那么就要构成一些样本数据:

x <- runif(10)
index <- c(2,5,4,8)

尝试:

> lapply(index, function(index) return(x[1:index]))
[[1]]
[1] 0.3869757 0.4060021

[[2]]
[1] 0.3869757 0.4060021 0.4843015 0.2064443 0.4614179

[[3]]
[1] 0.3869757 0.4060021 0.4843015 0.2064443

[[4]]
[1] 0.3869757 0.4060021 0.4843015 0.2064443 0.4614179 0.9278044 0.7351291
[8] 0.9792204