我希望有一个我可以一次粘贴到R中的脚本。理想情况下,此脚本将包含散布各种函数的代码行。但是到目前为止,我必须一次一个地粘贴我的代码,因为(正如我已经写过的),当与下面的代码同时运行时,这些函数将无法工作。
对于下面的代码,我想让用户输入初始数据,然后对其进行计算。由于我不能连续运行几个“readline”调用,所以我将它们包装到一个名为Define的函数中。但是如果我立刻将它粘贴到R中,则以下代码将无效。
Define<-function(){
N<-readline("EnterDeployment # ")
Y<-as.numeric(readline("What Year was the Deployment? "))
L<-as.numeric(readline("What is the Distance? "))
return(list("Year"=Y,"Name"=N, "Length"=L))
}
Def<-Define()
Name<-Def$Name
Year<-Def$Year
L<-Def$Length
readline(paste("UPDN=",Name,"Year=",Year,"Distance=",L,"If this is correct press Return", sep=" "))
D<-L/4
F<-D*5
但如果我把它分成几段,它就可以了。有没有办法将单个或多个函数合并到一行代码中?
答案 0 :(得分:5)
我认为没有理由不在功能中使用其他步骤。这样可以解决问题,并且恕我直言。
FOO <- function() {
Define<-function(){
N<-readline("EnterDeployment # ")
Y<-as.numeric(readline("What Year was the Deployment? "))
L<-as.numeric(readline("What is the Distance? "))
list("Year"=Y,"Name"=N, "Length"=L)
}
Def<-Define()
Name<-Def$Name
Year<-Def$Year
L<-Def$Length
readline(paste("UPDN=",Name,"Year=",Year,"Distance=",L,
"If this is correct press Return",
sep=" "))
D<-L/4
F<-D*5
list(D = D, F = F)
}
我们在使用中:
> FOO()
EnterDeployment # 12
What Year was the Deployment? 2012
What is the Distance? 54
UPDN= 12 Year= 2012 Distance= 54 If this is correct press Return
$D
[1] 13.5
$F
[1] 67.5
当然,您需要source()
包含.R
的{{1}}文件,但这没问题。
为什么这更可取?那么封装像这样的函数中涉及的所有步骤更简洁。您也不会污染作为中间步骤创建的对象。最后,如果将其传递给其他用户,您可以将其打包为R包(您不需要编写文档 - 只需添加一个简单的FOO()
文件)。