#r
#r
Вопрос:
recursiveCall <- function(x, N)
{
cat("length = ", length(x))
cat("vector x = ", x[1:2^N], "n")
return (x)
}
PaulLevyBrownianMotion <- function(N)
{
cat("Paul Levy construction for N = ", N, "n")
W = c(rnorm(2^N 1, 0, 1))
cat("length = ", length(W))
cat("Wstandard = ", W, "n")
W <- recursiveCall(W[1:2^N 1], N)
return (W)
}
Мой вектор W, похоже, потерял свой первый компонент при передаче другой функции. Не могли бы вы помочь мне с этим? Вот результат.
> W = PaulLevyBrownianMotion(2)
Paul Levy construction for N = 2
length = 5Wstandard = 0.08641454 1.616638 -0.8747996 0.6149899 0.2689501
length = 4vector x = 1.616638 -0.8747996 0.6149899 0.2689501
>
Комментарии:
1. Вероятно, это связано с тем, что оператор двоеточия
:
имеет приоритет над. Попробуйте использовать скобки при построении
W[1:(2^N 1)]
2. @Andrie: d’oh, одновременный пост. Подтверждено в R.
3. Мне интересно, почему вы не используете функцию R
Recall
?
Ответ №1:
W[1:2^N 1]
не индексирует то, что вы думаете, из-за приоритета. Сначала 1:2^N
создается вектор, а затем 1
добавляется скаляр (поэтому каждый элемент увеличивается на единицу), в результате чего выбираются элементы от 2 до конца.
Комментарии:
1. так что, я думаю, я должен написать, как сказал Андри, будучи W[1:(2 ^ N 1)] . Большое спасибо за все ваши ответы, я попробую это прямо сейчас.
2. Правильно, решение Андри будет индексировать нужные вам элементы. Для конкретного случая, который вы опубликовали, на самом деле, достаточно просто передать
W
, потомуW
что определено с длиной2^N 1
.