R 循环只提供第一个输出

R 循环只提供第一个输出,r,loops,indexing,R,Loops,Indexing,这是数据。这些是火车站: TwentyFourSeptTrainData $PTCAR_LG_NM_NL ALPHA BRAVO CHARLIE DELTA ECHO FOXTROT ALPHA BRAVO etc. etc. 因此,对于每个火车站,我想运行下面的循环,使值c变为Station1或Station2,具体取决于行 所以我首先必须将b定义为该列中的每个火车站,一行一行。 然后我需要确保,对于b中的每一行,我都得到了

这是数据。这些是火车站:

   TwentyFourSeptTrainData

   $PTCAR_LG_NM_NL
   ALPHA
   BRAVO
   CHARLIE
   DELTA
   ECHO
   FOXTROT
   ALPHA
   BRAVO
   etc. etc.
因此,对于每个火车站,我想运行下面的循环,使值c变为Station1或Station2,具体取决于行

所以我首先必须将b定义为该列中的每个火车站,一行一行。 然后我需要确保,对于b中的每一行,我都得到了相应的c

  for (b in TwentyFourSeptTrainData$PTCAR_LG_NM_NL) {

  if (b=='CHARLIE' | b=='ALPHA'){ 
  c = 'Station1'
  }  
  else if (b==BRAVO | b=='DELTA' | b=='ECHO' | b=='FOXTROT'){
  c = 'Station2'
  }      
  }
  print(c)
因为在那之后,我需要在需要c的每一个输出的每一行上运行一个函数

但是当我将b(在运行循环之前)预定义为


b如果在for循环之前将c初始化为空列表,是否有效?i、 e

c = c()
for (b in TwentyFourSeptTrainData$PTCAR_LG_NM_NL) {
    if (b=='CHARLIE' | b=='ALPHA'){ 
        c = c(c, 'Station1')
  }  
    else {
        c = c(c, 'Station2')
  }      
}
print(c)

我建议您在R中使用矩阵操作,而不是使用循环:

#create data-frame
df <- data.frame(b = c("ALPHA", "BRAVO","CHARLIE", "DELTA", "FOXTROT", "ALPHA", "BRAVO" ))
df
  b
1   ALPHA
2   BRAVO
3 CHARLIE
4   DELTA
5 FOXTROT
6   ALPHA
7   BRAVO

#matrix manipulation
df$c[df$b == "CHARLIE" | df$b== "ALPHA"] <- "Station 1"
df$c[df$b == "BRAVO" | df$b == "DELTA" | df$b == "ECHO" | df$b == "FOXTROT"] <- "Station 2"
df
        b         c
1   ALPHA Station 1
2   BRAVO Station 2
3 CHARLIE Station 1
4   DELTA Station 2
5 FOXTROT Station 2
6   ALPHA Station 1
7   BRAVO Station 2
#创建数据帧

df每次通过循环时,都会不断替换
c
的值。我认为这里根本不需要循环,最好使用
ifelse
函数。可能类似于
ifelse(TwentyFourSeptTrainData$PTCAR\u LG\u NM\u NL%在%c中('CHARLIE','ALPHA'),“Station1”,“Station2”)
如果我有3个车站呢?所以:1号站,2号站,3号站。ALPHA将在Station3的何处?您可以嵌套
ifelse()
语句,或者在
from
dplyr