l oop обеспечивает только первый вывод - PullRequest
0 голосов
/ 26 февраля 2020

Это данные. Итак, это железнодорожные станции:

   TwentyFourSeptTrainData

   $PTCAR_LG_NM_NL
   ALPHA
   BRAVO
   CHARLIE
   DELTA
   ECHO
   FOXTROT
   ALPHA
   BRAVO
   etc. etc.

Итак, для каждой железнодорожной станции я хочу запустить l oop ниже, чтобы значение c становилось Станцией1 или Станцией2, в зависимости от на ряду.

Итак, сначала я должен определить 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 (перед запуском l oop) как

b <- TwentyFourSeptTrainData $ PTCAR_LG_NM_NL </p>

После этого я печатаю (c), но это дает мне только один выход; первый. Я думаю, что я делаю что-то не так с индексацией. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Я предлагаю вам использовать матричную манипуляцию в R вместо использования l oop:

#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
0 голосов
/ 26 февраля 2020

Работает ли это, если вы инициализируете c как пустой список перед вашим для l oop? т.е.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...