的不同部分薩姆值I具有多個由1和0的矢量,如:R:是在矢量
[1] x <- c(0, 1, 1, 0, 0, 1)
我想在不同部位進行計數連續的1的數量這些序列,並且在這種情況下結束:
[1] 2 1
我一直在使用類似strsplit分裂那裏有零序列認爲,雖然這是一個數字矢量所以strsplit將無法正常工作和理想我不不想在數字和字符格式之間來回切換。
有沒有另一個更簡單的解決方案呢?將不勝感激任何幫助。
的不同部分薩姆值I具有多個由1和0的矢量,如:R:是在矢量
[1] x <- c(0, 1, 1, 0, 0, 1)
我想在不同部位進行計數連續的1的數量這些序列,並且在這種情況下結束:
[1] 2 1
我一直在使用類似strsplit分裂那裏有零序列認爲,雖然這是一個數字矢量所以strsplit將無法正常工作和理想我不不想在數字和字符格式之間來回切換。
有沒有另一個更簡單的解決方案呢?將不勝感激任何幫助。
可以將價值分成載體和使用rle
這樣的:
有了您的原始值
x <- 11001
temp <- rle(unlist(strsplit(as.character(x), split="")))
temp$lengths[temp$values == 1]
[1] 2 1
它與你不必矢量開始時有點簡單使用strsplit
和unlist
。
x <- c(0, 1, 1, 0, 0, 1)
temp <- rle(x)
temp$lengths[temp$values == 1]
[1] 2 1
對於這種情況不是必需的,但是'temp $ values [temp $ values!= 0] * temp $ lengths [temp $ values!= 0]'可能會更通用 –
@db正確。這也適用於非二元向量的情況。 – lmo
如果您使用數字值,我認爲您需要使用字符串。 – R18
@Sotos對不起。我正在處理矢量並編輯我的響應。 – Bjorn
@Cath謝謝,完美的工作! – Bjorn