假设我有2个变量,“ a”和“ b”。我需要生成“ a 0.1 b 0.1”一直到“ a 0.3 b 0.3”的各种组合。我可以通过在R中循环嵌套for循环来轻松做到这一点。
while True:
pl1 = Robot()
pl1.update() # here is the problem
tk.update()
time.sleep(10)
我的输出将是
A =1
for (i in seq(0.1, 0.3, by = 0.1)) {
for (j in seq(0.1, 0.3, by = 0.1)) {
B = paste("a", i , "b", j)
A = c(A, B)
}
}
A = A[-1]
A
如果我有3个变量,则必须再添加一个for循环。
> A
[1] "a 0.1 b 0.1" "a 0.1 b 0.2" "a 0.1 b 0.3" "a 0.2 b 0.1" "a 0.2 b 0.2" "a 0.2 b 0.3" "a 0.3 b 0.1" "a 0.3 b 0.2" "a 0.3 b 0.3"
但是如果我的变量(a,b)和范围(0.1到0.3)是动态的怎么办?有没有动态生成for循环的方法?还是解决这个问题的更好方法?
答案 0 :(得分:2)
使用-
var1 <- paste("a",seq(0.1, 0.3, by = 0.1),sep=" ")
var2 <- paste("b",seq(0.1, 0.3, by = 0.1),sep=" ")
var3 <- paste("c",seq(0.1, 0.3, by = 0.1),sep=" ")
vars <- list(var1,var2,var3)
do.call(paste, as.data.frame(expand.grid(vars), stringsAsFactors=FALSE))
输出
[1] "a 0.1 b 0.1 c 0.1" "a 0.2 b 0.1 c 0.1" "a 0.3 b 0.1 c 0.1" "a 0.1 b 0.2 c 0.1"
[5] "a 0.2 b 0.2 c 0.1" "a 0.3 b 0.2 c 0.1" "a 0.1 b 0.3 c 0.1" "a 0.2 b 0.3 c 0.1"
[9] "a 0.3 b 0.3 c 0.1" "a 0.1 b 0.1 c 0.2" "a 0.2 b 0.1 c 0.2" "a 0.3 b 0.1 c 0.2"
[13] "a 0.1 b 0.2 c 0.2" "a 0.2 b 0.2 c 0.2" "a 0.3 b 0.2 c 0.2" "a 0.1 b 0.3 c 0.2"
[17] "a 0.2 b 0.3 c 0.2" "a 0.3 b 0.3 c 0.2" "a 0.1 b 0.1 c 0.3" "a 0.2 b 0.1 c 0.3"
[21] "a 0.3 b 0.1 c 0.3" "a 0.1 b 0.2 c 0.3" "a 0.2 b 0.2 c 0.3" "a 0.3 b 0.2 c 0.3"
[25] "a 0.1 b 0.3 c 0.3" "a 0.2 b 0.3 c 0.3" "a 0.3 b 0.3 c 0.3"
说明
var1
,var2
,var3
仅出于示例目的而设计。
使用expand.grid()
为变量list
传递vars
。
vars
可以包含list
个变量,您可以根据这些变量动态生成组合。