【发布时间】:2020-01-12 10:27:22
【问题描述】:
我正在尝试根据计算的索引填充 Tidy data.frame。从计算值创建索引向量后,我可以测试并确认计算值是否正确。但是,当我使用该向量将值分配给 data.frame 中的行时,我可以看到这些值没有被完全填充到正确的行中(另外一行不应该被填充)。当我使用 from:to 方法将相同的值分配给向量时,这些值会填充到正确的行中。
当我使用from:to 方法将相同的值分配给向量时,这些值会填充到正确的行中。
PostPulseIndices <- ((Alpha+StepDuration)/SampleInterval+1) : ((Alpha+StepDuration+0.120)/SampleInterval)
产生正确的结果:
> head(PostPulseIndices)
[1] 2801 2802 2803 2804 2805 2806
但是,当用于填充 data.frame 中特定列中的行时,值会提前填充一行:
DataFrame$"A1 min"[PostPulseIndices] <- A1_min
DataFrame$"A2 min"[PostPulseIndices] <- A2_min
> DataFrame[2799:2802,]
A1 min A2 min
2799 NA NA
2800 0.001 8e-04
2801 0.001 8e-04
2802 0.001 8e-04
为什么 A1 和 A2 应该填充在第 2801 行(索引向量开始的位置),而它们却填充在第 2800 行,我如何确保继续填充正确的行?
编辑:根据@Gregory 对附加代码的要求,以下是用于计算 PostPulseIndices 的值:
Alpha <- 0.02
StepDuration <- 0.120
SampleInterval <- 5e-05
这是用于创建 data.frame 的代码:
Sweeps <- 1
SweepDuration <- 0.3
x <- seq(SampleInterval, SweepDuration, by = SampleInterval)
ColNames <- c("A1 min", "A2 min")
DataFrame <- setNames(data.frame(matrix(ncol = (length(ColNames)), nrow = (length(x) * Sweeps))), ColNames)
【问题讨论】:
-
澄清一下,当我使用
from:to表示法为索引值分配相同的值时,data.frame 会按预期填充从 2801 开始的指定列。