SHR*_*ram 1 if-statement r object
我正在尝试使用 for 从 for 创建多个对象,只是示例(不准确):
l_gr <- list (1:10, 11:20, 21:30)
for (i in 1:length(l_gr)){
grp <- NULL
grp[[i]] <- mean(l_gr[[i]])
}
Run Code Online (Sandbox Code Playgroud)
这不是我所期望的,而是我需要输出多个对象(不同类)但是名称与 i 级别不同,例如:这里是 grp1、grp2、grp3。这些对象中的每一个都有特定 i 列表的函数输出。对不起,简单的问题。
编辑:响应提供具体示例:
install.packages("onemap")
require(onemap)
data(example.out)
twopts <- rf.2pts(example.out)
all.data <- make.seq(twopts,"all")
link_gr <- group(all.data)
link_gr$n.groups
Run Code Online (Sandbox Code Playgroud)
开始循环
# without loop:
# for 1
grp1 <- make.seq(link_gr, 1)
grp1.od <- order.seq(input.seq=grp1, n.init = 5, subset.search = "twopt",
twopt.alg = "rcd", THRES = 3, draw.try = TRUE, wait = 1, touchdown=TRUE)
# for 2
grp2 <- make.seq(link_gr, 2)
grp2.od <- order.seq(input.seq=grp2, n.init = 5, subset.search = "twopt",
twopt.alg = "rcd", THRES = 3, draw.try = TRUE, wait = 1, touchdown=TRUE)
Run Code Online (Sandbox Code Playgroud)
1:1:link_gr$n.groups 的相同进程报告
所以我想创建一个 for 循环和输出对象:
for (i in 1:link_gr$n.groups){
grp <- NULL
grp[i] <- make.seq(link_gr, i)
grp[i].od <- order.seq(input.seq=grp[i], n.init = 5, subset.search = "twopt",
twopt.alg = "rcd", THRES = 3, draw.try = TRUE, wait = 1, touchdown=TRUE)
}
Run Code Online (Sandbox Code Playgroud)
请注意,您的 for 循环是错误的。如果您grp <- NULL在循环中进行设置,您只需在每次迭代时擦除结果变量 - 可能不是您想要的。您需要将变量初始化放在循环之外。
另请注意,我建议您最好使用单个变量而不是多个变量。listR 中的对象非常灵活,可以容纳不同类的对象。你可以做
require(onemap)
data(example.out)
twopts <- rf.2pts(example.out)
all.data <- make.seq(twopts,"all")
link_gr <- group(all.data)
link_gr$n.groups
# initialise list outputs
grp = list()
grp.od = list()
for (i in 1:2){
grp[[i]] <- make.seq(link_gr, i)
grp.od[[i]] <- order.seq(input.seq=grp[[i]], n.init = 5, subset.search = "twopt",
twopt.alg = "rcd", THRES = 3, draw.try = TRUE, wait = 1, touchdown=TRUE)
}
#check out output
str(grp)
str(grp.od)
grp[[1]]
grp[[2]
Run Code Online (Sandbox Code Playgroud)
如果您必须坚持使用不同的变量,请考虑?assign和?get。像这样的事情会起作用:
i = 1
assign(paste("grp", i, sep = ""), grp[[1]])
exists("grp1")
str(get(paste("grp", i, sep = "")))
Run Code Online (Sandbox Code Playgroud)