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

cor()函数在R控制台运行正常,编织RMD为HTML时出错求助

问题:R控制台计算相关性正常,但RMD编织HTML时报错

1. 控制台运行情况

在R控制台执行以下代码,可得到0.57的输出结果:

cor(days_sleep_tracking$TotalMinutesAsleep, days_sleep_tracking$count_days_sleep_tracking , method = "spearman")

2. RMD编织报错信息

将RMD文件编织为HTML时,出现以下错误及警告:

Error in cor(days_sleep_tracking$TotalMinutesAsleep, days_sleep_tracking$count_days_sleep_tracking,  : supply both 'x' and 'y' or a matrix like 'x'
Calls: <Anonymous> ... withVisible -> eval_with_user_handlers -> eval -> eval -> cor
In addition: Warning message:
Expected 2 pieces. Additional pieces discarded in 413 rows[1,2,...]
Execution halted

3. 数据样例

count_days_sleep_tracking (int)TotalMinutesAsleep (dbl)
25360.2800
4294.000
3652.000
5417.0000

已排查项

  • 确认RMD文件中已加载stats库
  • 相同代码用于另一张表时,编织流程可正常完成
  • 初步怀疑问题与表结构或数据类型相关,但未发现明显差异

解决方案建议

1. 验证数据加载的一致性

检查R控制台与RMD编织时的工作目录和数据导入逻辑是否一致:

  • RMD默认工作目录是其所在文件夹,而控制台可能使用不同路径,导致加载的数据不完整或格式异常。可在RMD代码块中添加getwd()确认路径,或使用绝对路径加载数据。

2. 检查变量的有效性

在执行cor的代码块前,添加以下代码查看数据状态:

# 查看数据结构
str(days_sleep_tracking)
# 查看变量统计信息
summary(days_sleep_tracking$TotalMinutesAsleep)
summary(days_sleep_tracking$count_days_sleep_tracking)
# 检查是否存在NA值
sum(is.na(days_sleep_tracking$TotalMinutesAsleep))
sum(is.na(days_sleep_tracking$count_days_sleep_tracking))

确认两个变量均为数值类型,且无大量NA值或空值导致cor无法识别有效输入。

3. 处理数据导入的分割警告

报错前的警告提示“Expected 2 pieces. Additional pieces discarded”,说明数据导入时存在列分割错误:

  • 检查数据导入代码(如read.csv/read.table)的分隔符参数(sep)是否正确,避免因分隔符设置错误导致某列数据被拆分后丢弃,进而造成变量缺失或格式异常。

4. 显式处理缺失值

在cor函数中添加use = "complete.obs"参数,排除含NA的行,避免缺失值干扰计算:

cor(days_sleep_tracking$TotalMinutesAsleep, 
    days_sleep_tracking$count_days_sleep_tracking, 
    method = "spearman", 
    use = "complete.obs")

5. 确认数据框未被意外修改

检查RMD中执行cor代码前的所有代码,确保days_sleep_tracking数据框未被后续代码清空、修改列名或删除目标列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:05:24