没有参数的函数

Far*_*rge 1 r function

我不确定这一点。这是一个不起作用的函数示例:

myfunction<-function(){
mydata=read_excel("Square_data.xlsx", sheet = "Data", skip=0)
mydata$Dates=as.Date(mydata$Dates, format= "%Y-%m-%d")
mydata.ts=ts(mydata, start=2006, frequency=1)
}
Run Code Online (Sandbox Code Playgroud)

文件不加载。当我在 R 中逐行执行每个命令行时,文件被加载,所以命令没有问题。我的问题是,我可以运行诸如 myfunction 之类的函数来加载文件吗?谢谢。

G. *_*eck 5

函数中的最后一条语句是赋值如果函数中最后执行的语句是赋值,那么它不会显示在控制台上,除非您使用,print但如果函数结果已赋值,则您可以稍后打印分配的值。例如,使用内置BOD数据框:

> f <- function() bod <- BOD
> f() # no result printed on console because f() was not explicitly printed
> print(f()) # explicitly print
  Time demand
1    1    8.3
2    2   10.3
3    3   19.0
4    4   16.0
5    5   15.6
6    7   19.8
> X <- f() # assign and then print the assigned value
> X
  Time demand
1    1    8.3
2    2   10.3
3    3   19.0
4    4   16.0
5    5   15.6
6    7   19.8
Run Code Online (Sandbox Code Playgroud)

函数中的最后一条语句是产生结果的表达式如果最后一条语句产生一个值而不是赋值,那么结果将打印在控制台上。例如:

> g <- function() BOD
> g()
  Time demand
1    1    8.3
2    2   10.3
3    3   19.0
4    4   16.0
5    5   15.6
6    7   19.8
Run Code Online (Sandbox Code Playgroud)

因此,如果您希望函数中的最后一条语句自动显示在控制台上,请确保它不是赋值语句。

注意 1:源代码另外,请注意,如果您的代码是使用source()语句获取的,或者如果代码由另一个函数调用,那么它也不会在控制台上自动打印,除非您使用print.

注2:两个结果关于问题的一些评论,如果你想输出两个结果,那么将它们输出到一个命名列表中。例如。这将输出一个包含名为 BOD 和 BOD2 的组件的列表:

h <- function() list(BOD = BOD, BOD2 = 2*BOD)
h()
$BOD
  Time demand
1    1    8.3
2    2   10.3
3    3   19.0
4    4   16.0
5    5   15.6
6    7   19.8

$BOD2
  Time demand
1    2   16.6
2    4   20.6
3    6   38.0
4    8   32.0
5   10   31.2
6   14   39.6
Run Code Online (Sandbox Code Playgroud)

我们可以这样称呼它们:

> H <- h()
> H$BOD
  Time demand
1    1    8.3
2    2   10.3
3    3   19.0
4    4   16.0
5    5   15.6
6    7   19.8
> H$BOD2
  Time demand
1    2   16.6
2    4   20.6
3    6   38.0
4    8   32.0
5   10   31.2
6   14   39.6
Run Code Online (Sandbox Code Playgroud)

注 3:<<- 运算符关于问题的注释,通常<<-应避免使用运算符,因为它以一种不可见且因此容易出错的方式将函数的内部结构链接到全局工作区,这是不合需要的。如果你想返回一个值,通常最好将它作为函数的输出返回。有一些情况<<-是有保证的,但它们相对不常见。