BERT 中的 R 不会在 sum 函数中使用 na.rm=TRUE
R in BERT won't use na.rm=TRUE in sum function
我安装了 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! returned.
是否可以利用 na.rm 参数,使用 BERT,以便对于具有 na.rm 参数的 R 语言函数,考虑到 [=25] 中的空白单元格=] range 仍然计算剩余的值,而不是 return #NULL!?
这有点复杂,因为如果您传入一个参数(范围)或多个参数(单个单元格),行为会有所不同。但是在单个参数的情况下,如果您传入一个包含空单元格的范围,它将作为列表传递。在这种情况下,您需要调用 unlist
,例如
Add <- function( ... ) {
sum(unlist(...), na.rm=TRUE);
}
Excel 可以有包含不同类型(例如字符串和数字)的范围,但 R 不能。因此,当 BERT 将数据从 Excel 传递到具有混合类型的 R 时,它使用列表列表。
运行时在控制台中有关于此的提示,这是一个很好的起点 -- 它说参数是无效类型(列表)。
正如我所说,这很复杂,因为三点参数可以引用多个参数,每个参数可以是一个列表或单个值(标量),每个参数可以是不同的类型。在这种情况下,您需要使用 apply
函数之一来取消列出不同的参数。但是先试试上面的。
我安装了 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! returned.
是否可以利用 na.rm 参数,使用 BERT,以便对于具有 na.rm 参数的 R 语言函数,考虑到 [=25] 中的空白单元格=] range 仍然计算剩余的值,而不是 return #NULL!?
这有点复杂,因为如果您传入一个参数(范围)或多个参数(单个单元格),行为会有所不同。但是在单个参数的情况下,如果您传入一个包含空单元格的范围,它将作为列表传递。在这种情况下,您需要调用 unlist
,例如
Add <- function( ... ) {
sum(unlist(...), na.rm=TRUE);
}
Excel 可以有包含不同类型(例如字符串和数字)的范围,但 R 不能。因此,当 BERT 将数据从 Excel 传递到具有混合类型的 R 时,它使用列表列表。
运行时在控制台中有关于此的提示,这是一个很好的起点 -- 它说参数是无效类型(列表)。
正如我所说,这很复杂,因为三点参数可以引用多个参数,每个参数可以是一个列表或单个值(标量),每个参数可以是不同的类型。在这种情况下,您需要使用 apply
函数之一来取消列出不同的参数。但是先试试上面的。