2015-09-11 3 views
-3

Предположим, у меня есть следующая функция,Генерация случайных чисел в R

foo <- function(x) { 
    print(x) 
    print(x) 
} 

И предположим, что я это сделать,

foo(runif(1)) 

я получаю следующий результат,

[1] 0.5354641 
[1] 0.5354641 

Или некоторые другое случайное число. Я хочу, чтобы в качестве вывода было два разных числа. Это возможно? Другими словами, я хотел бы,

[1] 0.5354641 
[1] 0.2895715 
+0

Я не уверен, почему это время вниз проголосовали. Это вопрос об ленивой оценке ... и ... – IQ472

+0

Наверное, потому что этот вопрос касается того, как использовать R, а не о статистике, и здесь нет темы. Если вы подождете, мы перенесем это на [SO] для вас. – gung

+0

Вы можете перенести этот и тот, который я опубликовал. Если это займет много времени, я просто отправлю туда. – IQ472

ответ

0

replicate(2, runif(1)) Ответы должны быть не менее 30 символов.

+2

Почему не просто 'runif (2)'? – Toni

+0

Это отвечает на этот вопрос. Но это не то, что я хочу. Мне нужно что-то для неизвестного количества вызовов в функции. – IQ472

+0

@ AntoniParellada Действительно, это хороший вопрос для OP. – Sycorax

1

Пытаясь расшифровать то, что вы хотите от комментариев, я думаю, вы хотите, чтобы функция случайной генерации чисел передавалась другой функции и выполняла ее несколько раз. По какой-то причине вы не можете просто указать его внутри основной функции foo (это поможет контекст). Я думаю, что вы хотите что-то, что использует match.fun() вроде этого:

foo <- function(FUN) { 
    FUN <- match.fun(FUN) 
    print(FUN()) 
    print(FUN()) 
} 

my_runif <- function(){ 
    runif(1) 
} 

foo(my_runif) 

Он делает то, что вы хотите, я думаю:

> foo(my_runif) 
[1] 0.6657059 
[1] 0.7969368 
+0

@ IQ472 это отвечает на ваш вопрос? –

Смежные вопросы