我有一个字符串向量a
。
a = c("Chemistry", "Chemistry", "Math","English","Math","Math","Physics","Physics","Chemistry")
有一种快速简单的方法可以如下制作吗?
c("Chemistry", NA, "Math","English","Math",NA,"Physics",NA,"Chemistry")
我尝试了diff
和duplicated
,没有得到我想要的东西。
答案 0 :(得分:5)
以下是使用rle
和replace
的方法:
replace(a, sequence(rle(a)$lengths) > 1, NA)
# [1] "Chemistry" NA "Math" "English" "Math" NA
# [7] "Physics" NA "Chemistry"
答案 1 :(得分:3)
我们可以比较(js/document.querySelector ".myclass")
的相邻元素以获取逻辑向量,并将vector
的元素分配给TRUE
。
NA
或者正如OP提到的a[c(FALSE,a[-1]==a[-length(a)])] <- NA
a
#[1] "Chemistry" NA "Math" "English" "Math" NA "Physics" NA "Chemistry"
,可以转换为diff
,将其强制转换为factor
,使用numeric
然后分配给NA
diff
或使用a[c(FALSE,!diff(as.numeric(factor(a))))] <- NA
duplicated