【发布时间】:2017-12-26 10:41:59
【问题描述】:
我有一个路径步骤向量,并且有一个特定的路径步骤,如果它重复,我想消除重复。
例如,
my_vec = "A > A > X > B > X > X > X > C > C"
现在如果“X”重复,那么我想消除除第一个之外的所有 X 重复,同时保留其余元素的顺序,这样我想要的结果是:
my_vec = "A > A > X > B > X > C > C",其中重复的 X 从中间消除。
我用for循环和if-else组合尝试了这个,这样我会检测向量中的前一个元素是否也包含'X',然后用NA替换元素,然后我可以删除NA项目,但这种方法不能提供预期的结果。
我尝试查看here 和here,但它们只是过滤掉了独特的元素,而我想对特定元素执行此操作。
这是我的代码:
my_vec <- unlist(str_split(my_vec, '>') )
for (i in length(my_vec)){
if (grepl('X', my_vec[i]) & grepl('X', my_vec[i-1])) {
steps[i] <- NA
} else {
next()
}}
my_new_vec <- str_c(steps, collapse = '>')
但是,输出与输入完全相同,没有任何内容更改为 NA。
【问题讨论】: