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()
语句,或者在fromdplyr