генерация шаблонных векторов / последовательности в r - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь создать таблицу значений, например:

k   P(X=k)

0     0.1
1     0.1*(0.9)
2     0.1*(0.9)^2
3     0.1*(0.9)^3

Это заставило меня задуматься, существует ли способ генерирования шаблонных векторов в R, например:

1,1,1,.9
1,1.9,.9
1,.9,.9,.9

Это то, что я пытаюсь произвести:

x1 = c(1,1,1,1,.9)

x2 = c(1,1,1,.9,.9)

x3 = c(1,1,.9,.9,.9)

x4 = c(1,.9,.9,.9,.9)

vec_mult = x1*x2*x3*x4

y = rep(0.1,5)

k = 0:4

P = y * vec_mult

write.table(cbind(k,P), row.names=F, sep ="\t")

"k"     "P"

0       0.1

1       0.09

2       0.081

3       0.0729

4       0.06561

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Чтобы сделать ваш узорчатый вектор, вам просто нужно что-то вроде:

make_vec <- function(x, y, n1, n2)  c(rep(x, n1), rep(y, n2)) 
list_of_vecs <- lapply(0:5, f(n) make_vec(1, 0.9, 5 - n, n))

Но сделать ваш кумулятивный продукт еще проще.Просто сделай

0.1 * .9^(0:5)
0 голосов
/ 16 мая 2018

Линия кода, которую вы ищете, равна

.1*.9^(0:15)

Вы можете возвести в степень с помощью вектора в R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...