为什么Rstudio中的函数没有输出?

时间:2019-06-05 16:55:39

标签: r matrix return

我是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或函数中插入的任何随机字符/数字。

非常感谢谁回答我的问题。

1 个答案:

答案 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)

在函数中使用什么名称都没关系,我可以将结果称为resultmy.resultx或{{1} }或我想要的任何名称。现在,我已经为jerry分配了所需的值,可以将my.resultmy.result(请注意大写字母View())或任何其他函数一起使用。 >

请注意,这是非常好,该函数没有为我选择一个名称。我不想跟踪内部函数使用的名称。上面,当我运行命令V时,如果我想保存该结果,我想选择自己的名字sqrt(x)-,这就是R的工作方式。我不想查看my.sqrt <- sqrt(x)或文档中的内容来弄清楚结果叫什么,我会选择我想要的任何名称。