创建一个向量,其中函数应用于每个第n个元素



我想创建一个大小为1000的向量,这样除了我对其应用函数X(z(的第四个元素之外,每个元素都为零。每个第四个元件都应该给出不同的X(z(值。

最初我有下面的代码,它给了我1000个不同X(z(值的元素。但我只希望它适用于每4个元素,其他元素为0。

replicate(1000,X(1))

然后我创建了一个一千个0的列表,并通过将X(1(添加到第四个元素

a<-replicate(1000,0)
a[c(FALSE, FALSE, FALSE,TRUE)] <- a[c(FALSE, FALSE, FALSE,TRUE)]+X(1)

但这给了我每4个元素相同的X(1(值。我希望每个元素的函数运行方式不同。还有比我的想法更雄辩的方法吗?

为任何n:功能化@qdread的注释

# create function X to extract first element from vector y
X <- function(y) y[1]
# create function to apply function X to nth element of vector v
my_fn <- function(v, n) {
sapply(v, function(i) if (i%%n == 0) X else 0)
}

最新更新