1

使用 R,从索引中计算字符值序列中更改次数的最佳方法是什么。例如,我有固定数量的站点:

sites<-as.factor(LETTERS[seq(from=1,to=20)])

在这些地点,一些受到保护,而另一些则可以钓鱼,

protected<-as.factor(c("A","D","E","M","L","S"))

使用模拟,我得到了这个站点序列(受保护/非受保护站点的组合)

result<-as.factor(c("A","A","A","B","C","D","D","L","L","F","F","T","S","N"))

基本上,我想计算我的结果序列中有多少次从“受保护”站点变为“不受保护”站点。在这个例子中,我正在寻找的答案是 3,因为“A”是一个受保护的站点,它正在移动到不受保护的“B”(一次移动),“B”正在移动到“C”(两者都不受保护,因此不会改变),...,“L”到“N”(两次移动)等。

4

1 回答 1

3

使用 %in% 和 diff 查找从受保护更改为不受保护的位置。然后计算你想要的值。在这里,受保护的 -> 不受保护的给出 -1。

sum(diff(result %in% protected) < 0)
于 2012-11-21T01:45:17.613 回答