You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R用for循环与if语句编写通用列均值计算函数输出错误求助

代码问题分析

你的代码存在以下几个核心错误,导致输出不符合预期:

  • 判断逻辑对象错误:is.numeric(input_data)是判断整个输入数据框是否为数值类型,而R的data.frame本身不属于numeric类型,所以该判断永远返回FALSE,所有列都会进入else分支输出非数值提示,正确的判断对象应该是循环中的每一列。
  • 列提取方式错误:使用input_data[i]提取列返回的是1列的data.frame结构,而非列向量,即使判断逻辑正确,基于该结构计算均值也不符合要求,应该使用双中括号[[提取列向量:input_data[[i]]。
  • 未符合作业要求:作业明确要求使用自定义均值函数,你封装后的代码直接调用了R内置的mean()函数,不符合要求,需要复用你之前编写的my_mean逻辑。
  • 冗余写法:colnames(input_data[i])属于冗余代码,循环变量i本身就是遍历得到的列名字符串,直接使用i即可。

修正后代码

# 保留要求的自定义均值函数
my_mean <- function(data_col){
  if(is.numeric(data_col)){
    return(sum(data_col)/length(data_col))
  }else{
    return('Non-numeric data')
  }
}

means_function <- function(input_data){
  for(i in colnames(input_data)){
    current_col_mean <- my_mean(input_data[[i]])
    cat(paste(i, "Mean:", current_col_mean, "\n"))
  }
}

# 调用测试
means_function(simulated_data)

内容的提问来源于stack exchange,提问作者Robbert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:24:03