首页 > 解决方案 > 用 R 中的单词重新组织向量

问题描述

这是我的向量:

myvector<-c("yes","yes","no","yes","yes","yes","No","No","No","yes","yes","No","No","No","yes","No","No","No","yes","yes")

我需要执行以下操作:

如果它重复出现“no”这个词,它会删除第一个词并用“yes”替换其他词。他倒着做。如果“不”这个词只出现一次,它什么也不做。

最终的向量应该是这样的:

myfinalvector<-c("yes","yes","no","yes","yes","yes","yes","yes","No","yes","yes","yes","yes","No","yes","yes","yes","No","yes","yes")

有帮助吗?

标签: r

解决方案


您可以diff在将reverted 向量强制为factor. "No"s where0"No"同时发生需要替换为"yes"

d <- data.frame(x=c(NA, diff(as.numeric(factor(rev(myvector))))), y=rev(myvector))
d$y[d$y == "No" & d$x == 0] <- "yes"
as.character(rev(d$y))
# [1] "yes" "yes" "no"  "yes" "yes" "yes" "yes" "yes" "No"  "yes" "yes" "yes"
# [13] "yes" "No"  "yes" "yes" "yes" "No"  "yes" "yes"

推荐阅读