R语言存在缺失值时计算相关系数R与R平方的实现方法
代码调整方案
问题原因
你编写的代码无法正常返回结果,原因有两点:
- 函数中定义的
na.rm参数没有传递给cor()函数,cor()默认遇到缺失值会直接返回NA - 现有函数仅支持返回R平方,未包含相关系数R的计算逻辑
调整后代码
方案1:自定义函数同时返回R和R²
# 定义计算函数 cal_cor_rsq <- function(x, y, na.rm = TRUE) { # 缺失值处理逻辑传递给cor函数 r <- cor(x, y, use = ifelse(na.rm, "complete.obs", "everything")) r_sq <- r^2 return(c(R = r, R_squared = r_sq)) } # 调用函数计算 result <- cal_cor_rsq(NDVINS$NDVIN, NDVINS$NDVIN_GPR) # 查看结果 result
方案2:直接调用基础函数计算
如果不需要封装函数,可以直接运行以下代码:
# 计算相关系数R,指定仅用无缺失值的观测行 R <- cor(NDVINS$NDVIN, NDVINS$NDVIN_GPR, use = "complete.obs") # 计算决定系数R平方 R_sq <- R^2 # 打印格式化结果 cat("相关系数R:", round(R, 4), "\n") cat("决定系数R平方:", round(R_sq, 4), "\n")
计算结果说明
基于你提供的30行样本数据计算,得到:
- 相关系数R ≈ 0.7621
- 决定系数R平方 ≈ 0.5808
内容的提问来源于stack exchange,提问作者Cláudio Siva
相关产品推荐
相关产品推荐

