Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在开发R软件包时为函数提供更友好的输入参数_R_User Interface_Package_Rstudio_User Input - Fatal编程技术网

在开发R软件包时为函数提供更友好的输入参数

在开发R软件包时为函数提供更友好的输入参数,r,user-interface,package,rstudio,user-input,R,User Interface,Package,Rstudio,User Input,我正在制作一个生成摘要报告的包。我有一个名为makeSum的函数,它需要许多输入数据并将输出摘要报告。但是,可以生成6个不同的输出摘要报告 由于包中还有很多其他函数,我认为最好使用一个函数(makeSum)和一个参数(sumType),该参数有6个可能的字符串选项(每个选项表示要生成的摘要类型—“aBShort”、“aBLong”、“gB”、“eAShort”、“eALong”、“eB”),而不是6个不同的函数(“makesumashort”、“makeSumABLong”、“makeSumGB

我正在制作一个生成摘要报告的包。我有一个名为makeSum的函数,它需要许多输入数据并将输出摘要报告。但是,可以生成6个不同的输出摘要报告

由于包中还有很多其他函数,我认为最好使用一个函数(makeSum)和一个参数(sumType),该参数有6个可能的字符串选项(每个选项表示要生成的摘要类型—“aBShort”、“aBLong”、“gB”、“eAShort”、“eALong”、“eB”),而不是6个不同的函数(“makesumashort”、“makeSumABLong”、“makeSumGB”、“makeSumEAShort”、“makeSumEALong”、“makesumeeb”)

我试图确定是否有一些步骤可以让用户在运行makeSum函数时更容易为sumType参数提供正确的字符串(无需记住字符串名称,因为它们会很长)

例如,当使用RStudio时,如果我大致知道函数名是什么(比如makeSum),那么我可以开始在控制台中键入它,点击tab,并提供自动填充建议,然后我还可以在控制台中键入该参数,点击tab,并提供自动填充建议。当该参数正好有6个字符串选项可供使用时,是否可以执行类似操作?如果我要键入,请与示例保持一致:

makeSum(data1 = myDF1, data2 = myDF2, sumType = )
然后点击tab,我会有六个可能的字符串选项(“aBShort”、“aBLong”、“gB”、“eAShort”、“eALong”、“eB”)为我列出

到目前为止,用户必须运行help(makeSum),并滚动查看帮助手册,以确定他们想要用于sumType参数的字符串的确切名称

我考虑使用数字(1, 2, 3,4, 5, 6)而不是长字符串,但是我发现长字符串更清楚地指定了6个摘要报告的内容。 任何关于如何使这一方面更加用户友好的建议都将不胜感激

这是我的MWE:

#' Generate summarization report
#'
#' Generates one of six possible types of summarization reports
#'
#' @param data1 first input
#' @param data2 second input
#' @param sumType type of summarization report. One of the following six string possibilities must be specified ("aBShort", "aBLong", "gB", "eAShort", "eALong", "eB"). "aBShort" means short version of alpha and beta summarization. "ABLong" mean long version of alpha and beta summarization. "gB" means gamma and beta summarization. "eAShort" means short version of epsilon and alpha summarization. "eALong" means long version of epsilon and alpha summarization. "eB" means epsilon and beta summarization.
#' @export

#'
makeSum =
  function(data1=NULL, data2=NULL, sumType=NULL){
...
}
>mychoice mychoice()
1:缺席
2:aBLong
3:gB
4:eAShort
5:eALong
6:eB
选择:4
[1] 4

除非您希望指定默认类型,否则在函数的形式中不需要参数。

查看
chooseCRANmirror
@42的代码谢谢您的帮助。我查看了chooseCRANmirror,但不确定这与我的问题有何关系,以及在这种情况下,它将以何种方式使用户更容易使用参数类型?我可能只是错过了这里的主题。你能解释一下让我走上正确的方向吗?我会很感激的!它显示了一个使用
tk
-家族函数的选项菜单。首先你看一下
chooseCRANmirror
,它调用
。chooseMirror
,然后调用
菜单()
。我想我本可以建议只看一下
?菜单,但在我建议的时候,我还没有遍历调用序列。。谢谢!从阅读?菜单来看,它确实像是我的目标!但是,我试图通过更改代码中的行:function(data1=NULL,data2=NULL,sumType=menu()aBShort“、”aBLong“、”gB“、”eAShort“、”eALong“、”eB”))。我可以通过让行将这些字符串转换为适当的任务来获得仍在运行的摘要报告。但是,当我以用户身份运行函数时,我无法获得列出选项的菜单。例如,我键入了:makeSum(data1=myDF1,data2=myDF2,sumType=),未获取菜单。我是否正确应用了菜单功能?您需要创建选项向量。请参见以下内容:
> mychoice <- function() {sumType=menu(c("aBShort", "aBLong", "gB", "eAShort", "eALong", "eB")); print(sumType)}
> mychoice()

1: aBShort
2: aBLong
3: gB
4: eAShort
5: eALong
6: eB

Selection: 4
[1] 4