我安装了BERT(R语言到Excel界面)。在包含的functions.R文件中,我修改了包含的Add函数以使用na.rm
参数,如下所示。
Add <- function( ... ) {
sum(..., na.rm=TRUE);
}
然而,似乎忽略了na.rm的意思。也就是说,如果范围中的所有值都存在,则Add()函数在Excel中可以正常工作。 如果所有单元格A1:A5都包含值,则Excel中的= R.Add(A1:A5)工作正常 但如果我删除范围内的任何值(因此Excel单元格为空),我会得到#NULL!返回。
是否可以使用na.rm参数,使用BERT,以便对于具有na.rm参数的R语言函数,它被考虑在内,Excel范围内的空白单元格仍然计算剩余值和不要回#NULL!?
答案 0 :(得分:0)
这有点复杂,因为如果传入一个参数(范围)或多个参数(单个单元格),则行为会有所不同。但是在单个参数的情况下,如果传入一个具有空单元格的范围,则会将其作为列表传递。在这种情况下,您需要致电unlist
,例如
Add <- function( ... ) {
sum(unlist(...), na.rm=TRUE);
}
Excel可以包含不同类型的范围(例如字符串和数字),但R不能。因此,当BERT将数据从Excel传递到具有混合类型的R时,它会使用列表列表。
在控制台运行时有一个提示,这是一个很好的起点 - 它说参数是一个无效的类型(列表)。
正如我所说的那样复杂,因为三点参数可以引用多个参数,每个参数可以是一个列表或一个值(一个标量),每个参数可以是不同的类型。在这种情况下,您需要使用其中一个apply
函数来取消列出不同的参数。但首先尝试上面的内容。