R语言如何编写自定义函数对列表中所有数值元素求和
R语言sum_num函数实现
函数代码
sum_num <- function(x) { total <- 0 for (item in x) { if (is.numeric(item)) { total <- total + sum(item, na.rm = FALSE) } } return(total) }
实现说明
- 核心逻辑是遍历输入列表的每个元素单独判断类型,避免直接对列表整体做数值判定(列表本身属于list类型,
is.numeric()对列表整体调用会直接返回FALSE,这也是之前调试失败的常见原因) - 仅对
is.numeric()返回TRUE的元素执行求和操作,字符串、函数、逻辑值等非数值元素会直接忽略 - 支持对数值向量、数值矩阵等所有数值型结构自动求和
测试验证
首先调整辅助函数(若要在列表中存入矩阵而非函数对象,需调用a_matrix()而非直接写函数名):
a_matrix <- function(){ matrix(1:9, nrow = 3) } my_list <- function(){ list(topic = "brand", c(1.04, 45, 87, 12), a_matrix()) }
运行测试代码:
the_list <- my_list() sum_num(x = the_list) # 输出结果:190.04 sum_num(x = the_list[2]) # 输出结果:145.04
内容的提问来源于stack exchange,提问作者PythonDaniel
相关产品推荐
相关产品推荐

