Объекты должны быть определены для использования.
Если я наберу x
в консоли R (в новом сеансе R), я получу ошибку:
> x
`Error: object 'x' not found`
Потому что R не знает, что такое x
.Но если я сначала определю x
(присвоив ему значение с помощью <-
или =
), то я смогу увидеть его значение очень хорошо:
Сначала определим его (обратите внимание, что результат не печатается, толькокоманда назначения, которую я запускаю):
> x <- 5
Теперь мы можем видеть x
или использовать ее:
> x
[1] 5
> sqrt(x)
[1] 2.236068
Точно так же, в моем новом сеансе Rфункция my.bivariate.dice
не существует.Если я попытаюсь вызвать его, я получу сообщение об ошибке:
> my.bivariate.dice(Nsample = 5)
Error in my.bivariate.dice(Nsample = 5) :
could not find function "my.bivariate.dice"
Но если я сначала определю его, используя <-
, то я смогу использовать его:
> my.bivariate.dice <- function(die1=1:6, die2=1:6, prob1=NULL,prob2=NULL,Nsample=20) {
+ roll1 <- sample(die1, prob=prob1, replace = TRUE, size = Nsample)
+ roll2 <- sample(die2, prob=prob2, replace = TRUE, size = Nsample)
+ my.result <- roll1 + roll2
+ return(my.result)
+ }
(+
в начале строки - это способ консоли R сообщить вам, что строка продолжается от приведенной выше. Вы не должны включать +
s в свой код, они добавляются консолью, простокак >
в начале первой строки)
Так же, как ничего не печатается, когда я назначил x <- 5
выше, ничего не печатается, когда я назначаю my.bivariate.dice <- ...
здесь.Но теперь я могу вызвать функцию:
> my.bivariate.dice(Nsample = 5)
[1] 6 3 6 9 8
Если я хочу использовать этот результат позже, мне нужно присвоить его объекту, используя <-
или =
:
> my.result = my.bivariate.dice(Nsample = 5)
Неважно, какие имена используются внутри функции, я могу назвать результат result
или my.result
или x
или jerry
или любое другое имя, которое я хочу.И теперь, когда я присвоил значения, которые я хочу, my.result
, я могу использовать my.result
с View()
(обратите внимание на заглавную V
) или любую другую функцию.
Обратите внимание, что это очень хорошая вещь , что функция не выбрала мне имя.Я не хочу отслеживать, какие имена используются внутри функций.Выше, когда я запустил команду sqrt(x)
, если бы я хотел сохранить этот результат, я бы хотел выбрать свое собственное имя, my.sqrt <- sqrt(x)
--- и вот как работает R.Я не хочу заглядывать внутрь sqrt()
или в документацию, чтобы выяснить, как называется результат, я выбираю любое имя, которое хочу.