我是Rstudio的初学者,所以我可能会问一些愚蠢的问题。当我键入此函数时:my.bivariate.dice.matrix(Nreps=2, Nsample = 5)
我得到
## [,1] [,2]
## [1,] 5 10
## [2,] 2 6
## [3,] 5 5
## [4,] 5 6
## [5,] 7 5
在我的控制台上。
但是当我键入此功能时:
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)
}
我在控制台部分获得了完全相同的功能的副本。
> 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)
+ }
未显示输出。
我的第一个问题是,如何从第二个函数获取输出?我错了或错过了哪一步?还是应该在控制台部分这样?
每当我输入view(my.result), sample(my.result), plot(my result)
时,都会得到类似以下的内容:
Error in View: object 'my.result' not found
但是,如果我将其切换为view (my.bivariate.dice()), sample (my.bivariate.dice())
,依此类推,则会分别得到所需的图表或图形。
所以我的第二个问题是为什么可以检查my.bivariate.dice()
,而找不到my.result
或函数中插入的任何随机字符/数字。
非常感谢谁回答我的问题。
答案 0 :(得分:0)
必须定义要使用的对象。
如果我在R控制台中输入x
(在新的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控制台告诉您该行是从上一行继续的方式。您不应在代码中包含+
,由控制台添加,就像第一行开头的>
就像我在上面分配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
或{{1} }或我想要的任何名称。现在,我已经为jerry
分配了所需的值,可以将my.result
与my.result
(请注意大写字母View()
)或任何其他函数一起使用。 >
请注意,这是非常好,该函数没有为我选择一个名称。我不想跟踪内部函数使用的名称。上面,当我运行命令V
时,如果我想保存该结果,我想选择自己的名字sqrt(x)
-,这就是R的工作方式。我不想查看my.sqrt <- sqrt(x)
或文档中的内容来弄清楚结果叫什么,我会选择我想要的任何名称。