我有一个由3列组成的数据表,分配给变量g。
g
# V1 V2 V3
# [1,] 1 Yes 3
# [2,] 4 No 6
# [3,] 7 No 9
# ...
我正在尝试通过检查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
但是当我尝试返回m时,它只返回NULL。我希望我看起来像这样:
m
# ABC1DEFYesGHI3
# GHI2DEFNoABC9
有人可以指出我在这里做错了吗?非常感谢你!
答案 0 :(得分: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
> ...