2015-07-17 5 views
2

У меня есть таблица данных, состоящая из 3 столбцов, которые назначаются переменной g.R Инструкция if else внутри цикла for

g 
#  V1 V2 V3 
# [1,] 1 Yes 3 
# [2,] 4 No 6 
# [3,] 7 No 9 
# ... 

Я пытаюсь создать список, м, проверив, чтобы увидеть, если значения в г [, 2] «Да» или «Нет», а затем вставить некоторую строку в т.

m <- for(i in 1:nrow(g)){ 
    if(g[i,2]=='No'){ 
    paste0("ABC", g[i,1], "DEF", g[i,2], "GHI", g[i,3],"\n") 
    } else if(g[i,2]=='Yes'){ 
    paste0("GHI", g[i,1], "DEF", g[i,2], "ABC", g[i,3],"\n") 
    } else {NULL} 
} 

m 
# NULL 

Однако, когда я пытаюсь вернуть m, он просто возвращает NULL. Я хочу, чтобы это было так:

m 
# ABC1DEFYesGHI3 
# GHI2DEFNoABC9 

Может кто-нибудь указать, что я делаю неправильно здесь? Большое спасибо!

ответ

3

Цикл for не возвращает ничего в R. Обычно вам нужно обновить другую переменную, которую вы продолжаете использовать после цикла for. Например:

m <- "intialize" # initialize, sometimes better as just `list()` 
for(i in 1:nrow(g)){ 
    if(g[i,2]=='No'){ 
    # paste into position i of vector m 
    m[i] <- paste0("ABC", g[i,1], "DEF", g[i,2], "GHI", g[i,3],"\n") 
    } else if(g[i,2]=='Yes'){ 
    # paste into position i of vector m 
    m[i] <- paste0("ABC", g[i,1], "DEF", g[i,2], "GHI", g[i,3],"\n") 
    } else { 
    NULL 
    } 
} 
m 
> ... 
Смежные вопросы