【发布时间】:2016-06-30 02:34:51
【问题描述】:
假设我有一个像这样的二进制向量(作为数据框中的一列):
000001111111000111100000001111000011111
我想取每个 1 的块,并用 0 替换整个块,只保留 1 的第一个实例:
000001000000000100000000001000000010000
目前我正在使用我认为效率非常低的方法进行此操作,并且该方法仅部分完成。我正在遍历数据帧的每一行并检查块开始,然后将与该开始 1 关联的索引/时间存储在新数据帧中:
stepStarts = data.frame()
for (i in 2:nrow(df)) {
if(df$step[i] == 1 & df$step[i-1] == 0){
stepStarts <- rbind(stepStarts, data.frame(trialNum = df$trialNum[i], stepTime = df$time[i]))
}
}
有没有更好的方法来实现这一点,而不必遍历数据框并将时间存储在新的数据框中(我只想替换现有的列)?
【问题讨论】:
-
df$step[c(0, diff(df$step)) != 1] <- 0?