R for循环中的if if语句

alk*_*lki 3 r

我有一个由3列组成的数据表,分配给变量g.

g
#      V1   V2 V3
# [1,]  1  Yes  3
# [2,]  4   No  6
# [3,]  7   No  9
# ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过检查g [,2]中的值是"是"还是"否"来创建列表m,然后将一些字符串粘贴到m中.

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
Run Code Online (Sandbox Code Playgroud)

但是当我尝试返回m时,它只返回NULL.我希望我看起来像这样:

m
# ABC1DEFYesGHI3
# GHI2DEFNoABC9
Run Code Online (Sandbox Code Playgroud)

谁能指出我在这里做错了什么?非常感谢你!

Bra*_*sen 8

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
> ... 
Run Code Online (Sandbox Code Playgroud)