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

R语言入门问题:如何将列名对应粘贴到列均值前?

问题解决:R语言中对应列名输出月均温

问题原因

你之前的循环写法核心错误在于:当使用for(i in raw[2:13])时,i每次提取的是对应列的数值向量,而非列对象,因此无法通过colnames(i)获取列名;直接调用month.name会输出所有月份名,导致每个结果前都附带完整月份列表。

入门级解决方案

方法1:循环列索引(最直观,适合入门)

通过循环目标列的索引,先获取对应列名,再计算均值并输出:

# 获取第2到13列的列名
target_cols <- colnames(raw)[2:13]

# 遍历每个列的索引
for (i in 1:length(target_cols)) {
  # 提取当前列名
  current_month <- target_cols[i]
  # 计算当前列的均值并保留1位小数
  temp_avg <- round(mean(raw[[current_month]]), digits = 1)
  # 按格式输出结果
  cat(current_month, ": ", temp_avg, " ºC\n", sep = "")
}

方法2:使用lapply(更简洁的向量化写法)

如果想尝试R的向量化操作,lapply可以遍历列名列表,逐个处理:

target_cols <- colnames(raw)[2:13]
lapply(target_cols, function(col) {
  temp_avg <- round(mean(raw[[col]]), digits = 1)
  cat(col, ": ", temp_avg, " ºC\n", sep = "")
})

三次尝试错误解析

  1. 第一次尝试(使用month.name):month.name是R内置的长度为12的月份名字向量,每次循环都会输出整个向量,因此每个结果前都会显示所有月份名。
  2. 第二次尝试(colnames(i)):i是提取出的列数值向量,向量没有列名属性,因此colnames(i)返回空值,导致输出时只有温度没有月份名。
  3. 第三次尝试(colnames(raw[i])):i是数值向量,用它作为索引去提取raw的列会触发索引错误,因为数据框的索引需要是位置数字、列名或逻辑值,而非数值向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:35:29