在R Markdown中使用RHRV包LoadBeatAscii加载心率数据报错求助
RHRV包LoadBeatAscii()加载数据报错:cannot change working directory
在R Markdown中使用RHRV包的LoadBeatAscii()函数加载.txt格式心率数据时,出现如下报错:
Error in setwd(RecordPath) : cannot change working directory
示例代码
library(RHRV) hrv.data <- CreateHRVData() # 创建空列表对象用于存储原始数据 hrv.data <- SetVerbose(hrv.data, TRUE) # 返回额外运行信息 hrv.data <- LoadBeatAscii(hrv.data, RecordName = "beat_ascii.txt", RecordPath = "Data/beat_ascii.txt") # 尝试从Data文件夹加载数据
数据说明
使用的示例数据来自milegroup的beat_ascii.txt,也可直接使用以下样本数据:
c(1.036, 1.7, 2.364, 3.024, 3.668, 4.324, 4.98, 5.656, 6.312, 6.96, 7.612, 8.248, 8.896, 9.54, 10.184, 10.824, 11.472, 12.128, 12.776, 13.432, 14.088, 14.756, 15.424, 16.112, 16.768, 17.444, 18.124, 18.816, 19.484, 20.164, 20.856, 21.552, 22.224, 22.9, 23.6, 24.304, 24.968, 25.644, 26.328, 27.008, 27.68, 28.356, 29.036, 29.696, 30.356, 31.032, 31.684, 32.344, 33, 33.66, 34.312, 34.976, 35.644, 36.3, 36.964, 37.64, 38.308, 38.988, 39.676, 40.348, 41.04, 41.744, 42.424, 43.1, 43.776, 44.46, 45.128, 45.808, 46.496, 47.168, 47.808, 48.48, 49.136, 49.788, 50.44, 51.112, 51.756, 52.412, 53.064, 53.712, 54.372, 55.028, 55.696, 56.344, 57.008, 57.672, 58.332, 58.996, 59.652, 60.3, 60.948, 61.584, 62.22, 62.852, 63.476, 64.096, 64.724, 65.356, 65.992, 66.628 )
问题更新
已有其他用户遇到相同问题,但暂未找到官方解决方案。
原因分析
报错核心原因是参数传值错误:LoadBeatAscii()的RecordPath参数要求传入文件夹路径,但你传入的是完整的文件路径。函数内部会调用setwd(RecordPath)尝试切换工作目录到该路径,而文件路径不是合法的文件夹,因此触发报错。
解决方法
方法1:正确拆分路径参数
将RecordPath设为数据所在文件夹,RecordName设为文件名:
library(RHRV) hrv.data <- CreateHRVData() hrv.data <- SetVerbose(hrv.data, TRUE) # 仅把文件夹路径传给RecordPath hrv.data <- LoadBeatAscii(hrv.data, RecordName = "beat_ascii.txt", RecordPath = "Data")
方法2:直接传入完整文件路径
忽略RecordPath参数,将完整文件路径传给RecordName:
hrv.data <- LoadBeatAscii(hrv.data, RecordName = "Data/beat_ascii.txt")
方法3:手动切换工作目录
先切换到数据所在文件夹,再加载数据,加载完成后可切回原目录:
setwd("Data") # 切换到数据文件夹 hrv.data <- LoadBeatAscii(hrv.data, RecordName = "beat_ascii.txt") setwd("..") # 切回上一级目录
补充:使用绝对路径
如果相对路径容易出错,可直接使用绝对路径(根据系统调整):
# Windows示例 hrv.data <- LoadBeatAscii(hrv.data, RecordName = "beat_ascii.txt", RecordPath = "C:/Users/你的用户名/项目目录/Data") # Mac/Linux示例 hrv.data <- LoadBeatAscii(hrv.data, RecordName = "beat_ascii.txt", RecordPath = "/Users/你的用户名/项目目录/Data")
内容的提问来源于stack exchange,提问作者kpm
相关产品推荐
相关产品推荐

