Создайте вектор, в котором функция применяется к каждому n-му элементу. - PullRequest
0 голосов
/ 03 марта 2020

Я хочу создать вектор размером, скажем, 1000, такой, что каждый элемент равен нулю, кроме каждого 4-го элемента, к которому я применяю функцию X (z). Каждый 4-й элемент должен давать различное значение X (z).

Первоначально у меня был код ниже, который дает мне 1000 элементов с различными значениями X (z). Но я хочу, чтобы он применялся только к каждому 4-му элементу, а остальные равны 0.

 replicate(1000,X(1))

Затем я создал список из тысячи нулей и добавил X (1) к 4-му элементу с помощью * 1008. *

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

Но это дает мне ЖЕ значение X (1) для каждого 4-го элемента. Я хочу, чтобы функция запускалась по-разному для каждого элемента. Есть ли более красноречивый способ сделать это, чем мое мышление?

1 Ответ

0 голосов
/ 03 марта 2020

Чтобы функционализировать комментарий из @qdread для любого n:

# 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...