如果在 r 中满足条件,则循环遍历列并替换值

时间:2020-12-19 02:52:19

标签: r for-loop if-statement

我仍然是 R 的初学者,我正在尝试弄清楚如何在我的循环中重写我的索引。

我有一个列 party 只列出了政党隶属关系。我编写了一个循环来替换列中不是 democratrepublican 的任何值。

for(i in 1:length(party3$party)){
  if(party3$party[i] != "democrat" || party3$party[i] != "republican"){
  party3$party[i] <- "I" }}

我的列 party 看起来像这样:

party
republican
independent
democrat
libertarian
independent
american independent
republican
democrat

我正在努力保持 democratrepublican 完好无损:

party
republican
I
democrat
I
I
I
republican
democrat

问题是,一切最终都被“我”取代。如何修复此循环的索引?

1 个答案:

答案 0 :(得分:1)

您可以在没有 for 循环的情况下分配值:

party3$party[!party3$party %in% c("democrat", "republican")] <- 'I'

#       party
#1 republican
#2          I
#3   democrat
#4          I
#5          I
#6          I
#7          I
#8 republican
#9   democrat

在您的 for 循环中,您需要使用 && 而不是 || 并且当两个值都不存在时它应该替换值。

for(i in 1:length(party3$party)) {
  if(party3$party[i] != "democrat" && party3$party[i] != "republican"){
    party3$party[i] <- "I" 
  }
}