传递空参数作为数组索引

如何解决传递空参数作为数组索引

我有一个函数,它接受用户输入的数组索引,然后执行计算。索引必须是字符串。这是上下文的数据属性的一个片段:

> attributes(data)
$dim
[1]  50 100 100

$dimnames
$dimnames[[1]]
 [1] "0.001"             "0.613224489795918" "1.22544897959184"  "1.83767346938775"  "2.44989795918367"  "3.06212244897959" 
 [7] "3.67434693877551"  "4.28657142857143"  "4.89879591836735"  "5.51102040816327"  "6.12324489795918"  "6.7354693877551"  
[13] "7.34769387755102"  "7.95991836734694"  "8.57214285714286"  "9.18436734693877"  "9.79659183673469"  "10.4088163265306" 
[19] "11.0210408163265"  "11.6332653061224"  "12.2454897959184"  "12.8577142857143"  "13.4699387755102"  "14.0821632653061" 
[25] "14.694387755102"   "15.306612244898"   "15.9188367346939"  "16.5310612244898"  "17.1432857142857"  "17.7555102040816" 
[31] "18.3677346938776"  "18.9799591836735"  "19.5921836734694"  "20.2044081632653"  "20.8166326530612"  "21.4288571428571" 
[37] "22.0410816326531"  "22.653306122449"   "23.2655306122449"  "23.8777551020408"  "24.4899795918367"  "25.1022040816327" 
[43] "25.7144285714286"  "26.3266530612245"  "26.9388775510204"  "27.5511020408163"  "28.1633265306122"  "28.7755510204082" 
[49] "29.3877755102041"  "30"               

$dimnames[[2]]
  [1] "10"   "20"   "30"   "40"   "50"   "60"   "70"   "80"   "90"   "100"  "110"  "120"  "130"  "140"  "150"  "160"  "170"  "180" 
 [19] "190"  "200"  "210"  "220"  "230"  "240"  "250"  "260"  "270"  "280"  "290"  "300"  "310"  "320"  "330"  "340"  "350"  "360" 
 [37] "370"  "380"  "390"  "400"  "410"  "420"  "430"  "440"  "450"  "460"  "470"  "480"  "490"  "500"  "510"  "520"  "530"  "540" 
 [55] "550"  "560"  "570"  "580"  "590"  "600"  "610"  "620"  "630"  "640"  "650"  "660"  "670"  "680"  "690"  "700"  "710"  "720" 
 [73] "730"  "740"  "750"  "760"  "770"  "780"  "790"  "800"  "810"  "820"  "830"  "840"  "850"  "860"  "870"  "880"  "890"  "900" 
 [91] "910"  "920"  "930"  "940"  "950"  "960"  "970"  "980"  "990"  "1000"

$dimnames[[3]]
  [1] "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"   "9"   "10"  "11"  "12"  "13"  "14"  "15"  "16"  "17"  "18"  "19"  "20"  "21" 
 [22] "22"  "23"  "24"  "25"  "26"  "27"  "28"  "29"  "30"  "31"  "32"  "33"  "34"  "35"  "36"  "37"  "38"  "39"  "40"  "41"  "42" 
 [43] "43"  "44"  "45"  "46"  "47"  "48"  "49"  "50"  "51"  "52"  "53"  "54"  "55"  "56"  "57"  "58"  "59"  "60"  "61"  "62"  "63" 
 [64] "64"  "65"  "66"  "67"  "68"  "69"  "70"  "71"  "72"  "73"  "74"  "75"  "76"  "77"  "78"  "79"  "80"  "81"  "82"  "83"  "84" 
 [85] "85"  "86"  "87"  "88"  "89"  "90"  "91"  "92"  "93"  "94"  "95"  "96"  "97"  "98"  "99"  "100"

我想要这样的东西:

myfun <- function(index){
    apply(X=data[,index,],MARGIN = c(1,2),FUN =  mean)
}

但是,如果用户要选择整个数据集,则需要具有data[,]。但是,由于不能将空参数传递给函数,因此我不确定如何实现此目的。如何将逗号之间的空白点表示为函数参数?

解决方法

您可以使用missing,以便缺少索引意味着“全选”,我认为这意味着用户只想要总体平均值。

myfun <- function(index)
{
  if(missing(index)) mean(data) else apply(data[,index,],1:2,mean)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?