2016-05-24 5 views
2

Мне нужно выполнить задание и вам нужна помощь. На первом этапе мне нужно создать данные.Сохраните самосозданные данные в векторе в R

Мне нужно написать функцию, которая вычисляет среднее требуемого количества нормально распределенных чисел и повторяет этот процесс для желаемого количества повторений.

Функция должна возвращать только один вектор, состоящий исключительно из вычисленных средств.

Так что это мой код до сих пор:

meanulator <- function(x=1000){ 
    mean(rnorm(x)) 
    } 

meanulator() #calculates means of random rnorm-numbers 


meanulatorrep <- function(r=10) { 
    for (i in 1:r) { 
    x <- meanulator(x=1000) 
    print(x) 
    } 
} 

meanulatorrep() #repeats it 

vec <- meanulatorrep(c(r=100)) 

vec <- c(meanulatorrep(r=10)) 

И это момент я не знаю, как работать с данными. Конечный вектор равен NULL (пустой).

+2

'meanulatorrep()' ничего не возвращает ... – zx8754

ответ

4

В качестве альтернативы вашего цикла можно использовать replicate так:

meanulatorrep <- function(r=10, x = 1000) { 
    replicate(r, meanulator(x = x)) 
} 

meanulatorrep() 
# [1] -0.013763838 -0.005205456 -0.022675000 0.032995429 0.043952000 0.020025558 -0.059852671 0.010714884 -0.025530839 
#[10] 0.009895310 
meanulatorrep(r = 3) 
#[1] 0.015299678 -0.003567159 0.036352255 
meanulatorrep(r = 3, x = 5) 
#[1] 0.1186618 0.2755995 -0.3906417 

Это также позволяет указать r и x изнутри meanulatorrep.

2

Чтобы сохранить значения, а не распечатывать, вам нужно изменить свой силуэт.

meanulatorrep <- function(r = 10) { 
    x2 <- NULL 

    for (i in 1:r) { 
    x <- meanulator(x = 1000) 
    x2[i] <- c(x)} 

    return(x2) 
} 

Так что, когда вы делаете vec <- meanulatorrep(c(r=100)) это сэкономит 100 значений в vec векторе.

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