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

为什么Rstudio中的my函数没有输出?,r,matrix,return,R,Matrix,Return,我是Rstudio的初学者,所以我可能会问一些愚蠢的问题。键入此函数时:my.bivariate.dice.matrix(Nreps=2,Nsample=5) 我明白了 从我的控制台 但是当我输入这个函数时: my.bivariate.dice <- function(die1=1:6, die2=1:6, prob1=NULL,prob2=NULL,Nsample=20) { roll1 <- sample(die1, prob=prob1, replace = TRUE, s

我是Rstudio的初学者,所以我可能会问一些愚蠢的问题。键入此函数时:
my.bivariate.dice.matrix(Nreps=2,Nsample=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())、sample(my.bivariate.dice())
等等,我分别得到了我想要的图表或图形

因此,我的第二个问题是,为什么可以检查
my.bivariate.dice()
,而
my.result
或函数中插入的任何随机字符/数字却找不到


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

必须定义要使用的对象

如果我在R控制台中键入
x
(在新的R会话中),我将得到一个错误:

> x
`Error: object 'x' not found`
> my.bivariate.dice(Nsample = 5)
Error in my.bivariate.dice(Nsample = 5) : 
  could not find function "my.bivariate.dice"

因为R不知道x是什么。但是如果我先定义
x
(使用
为其赋值),则必须定义要使用的对象

如果我在R控制台中键入
x
(在新的R会话中),我将得到一个错误:

> x
`Error: object 'x' not found`
> my.bivariate.dice(Nsample = 5)
Error in my.bivariate.dice(Nsample = 5) : 
  could not find function "my.bivariate.dice"

因为R不知道什么是
x
。但是如果我先定义
x
(通过
运行test为它赋值,这只是调用函数并将函数结果赋值给变量的问题吗?例如,如果你想让那些
View()
语句起作用,首先尝试
my.result(我删除了您的标记。如果您将鼠标悬停在标记上,则从其描述中可以看到:“不要将此标记用于常规R编程问题,只需使用R标记。”)在控制台上,您应该永远无法看到(无需更多努力)my.result的值,原因如下:(1)它位于函数内部,而您位于函数外部;(2)该变量仅在函数积极执行时存在,但当您在控制台上并在正常的
提示符下时,函数未运行,因此该变量不存在。请阅读编程中的作用域概念。变量
my.result
仅存在于函数的作用域内,不存在t在全局环境中外部。当您
返回它时,
my.result
的内容将从函数中传递出来并打印出来,分配给另一个变量(就像您在这里所做的那样),或传递给另一个函数运行测试是否只是调用函数并将函数结果分配给变量的问题?例如,如果希望这些
View()
语句正常工作,请首先尝试
my.result(我删除了标记。如果将鼠标移到标记上,则从其描述中删除标记:“不要将此标记用于一般的R编程问题,只需使用R标记。”)在控制台上,您应该永远无法看到(无需更多努力)my.result的值,原因有两个:(1)它位于函数内部,而您位于函数外部;(2)该变量仅在函数积极执行时存在,但当您在控制台上并在正常的
提示符下时,函数未运行,因此该变量不存在。请阅读编程中的作用域概念。变量
my.result
仅存在于函数的作用域内,不存在t外部的全局环境。当您
返回它时,
my.result
的内容将从函数中传递出来并打印出来,分配给另一个变量(就像您在这里所做的那样),或者传递给另一个函数非常感谢您,Gregor。您已经为我讲清楚了@安西节度使 很高兴这有帮助。如果您的问题得到解决,请单击问题左边空白处的复选标记“接受”我的答案。这将表明您没有等待更多答案(并给我们两人一点声誉分数)。非常感谢您,Gregor。您已经为我说得很清楚了@安西节度使 很高兴这有帮助。如果您的问题得到解决,请单击问题左侧空白处的复选标记“接受”我的答案。这将表明您没有等待更多答案(并给我们双方一点声誉分数)。
> x <- 5
> x
[1] 5

> sqrt(x)
[1] 2.236068
> 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)
+ }
> my.bivariate.dice(Nsample = 5)
[1] 6 3 6 9 8
> my.result = my.bivariate.dice(Nsample = 5)