【问题标题】:R: loop won't run due to a seq.default errorR:由于 seq.default 错误,循环不会运行
【发布时间】:2023-03-20 19:59:01
【问题描述】:

我正在尝试计算每 10 毫秒一小段 EEG 波的曲线下面积。为了首先练习这个,我制作了一个小数据集来运行auc(来自包{flux})函数。

x <- seq(1:10)
y <- c(0:4,5:1)
df <- data.frame(x,y)
attach(df)
plot(x,y)

for (i in 1:10){
  x1 <- c(i,(i+1))
  y1 <- c(subset(y, x == i),subset(y, x == (i+1)))
auc(x1,y1,thresh = 0)
rm(y1,x1,i)
}

循环应该尝试从每个变量中提取两个数据点,然后在这些数据点上运行auc。但是,在运行循环时,我收到此错误: Error in seq.default(x[1], x[2], length.out = dens) : 'to' must be a finite number

当我在循环外运行subsetauc 代码时,它没有问题。谁能告诉我循环中出了什么问题?

【问题讨论】:

  • 这是问题所在:subset(y, x == (i+1)) when i == 10
  • for i=10 i+1=11, out of your df
  • 我明白了,我该如何解决这个问题?

标签: r for-loop seq auc


【解决方案1】:

感谢您更新问题。这不是因为控制语句(for 循环),而是在 i=10 时准确地抛出错误——因为 x-coords 和 y-coords 向量的长度不同。特别是 c(10,11) 与 c(1)。但是 x=11 没有意义!

在适当的时候尽早停止循环

【讨论】:

  • 我更新了我的问题,auc 函数来自包{flux}link
猜你喜欢
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
相关资源
最近更新 更多