此示例是否可以使用单行解决方案?
df = data.frame('First' = c('T','T','V','V','A','E'),'Last' = c(rep('Ng',3),'Smith','Wolf','Wolf'))
matches = (df$First[-1] == df$First)
which(matches == 'TRUE')
# [1] 1 3
我想要indeses,但宁愿不使用临时变量。
答案 0 :(得分:0)
也许您可以结合使用rleid
中的data.table
函数和diff
,如下所示:
which(diff(rleid(df$First)) == 0)
[1] 1 3
您可能会争辩说df$First
中的2nd元素和4th元素与先前的值(而不是1st和3rd)匹配,因此,which(c(F, diff(rleid(df$First)) == 0))
可能更合适,它产生:{{ 1}}