![](/img/trans.png)
[英]Loop in R to produce graph for every combination of variables of different length
[英]Loop function in R for different combination of variables
我有以下优点和缺点的组合:
1 2 3 4 5 6 7 8
+ + + + - - - -
+ + - - + + - -
+ - + - + - + -
我想为下面的代码迭代每个组合
tbl44 <- tbl4 %>%
top_n(280) %>%
top_n(140) %>%
top_n(70) %>%
slice_head(n = 70)
例如,第一次迭代必须使用+280, +140. +70
+280, +140. +70
,第二次迭代必须使用+280, +140. -70
+280, +140. -70
和第三个+280, -140. +70
+280, -140. +70
等等,总共 8 次迭代。
重要的是每次迭代后都需要退出。 这意味着这是在较大的循环代码的中间。
我想出了一个可能的想法。 欢迎改进。
x = 1
mt <- list(list(280, 140, 70), list(280, 140, -70), list(280, -140, 70), list(280, -140, -70),
list(-280, 140, 70), list(-280, 140, -70), list(-280, -140, 70), list(-280, -140, -70))
while (x <= 8) {
a <- as.integer(mt[[x]][1])
b <- as.integer(mt[[x]][2])
c <- as.integer(mt[[x]][3])
print(a)
print(b)
print(c)
tbl44 <- tbl4 %>%
top_n(a) %>%
top_n(b) %>%
top_n(c) %>%
slice_head(n = 70)
x = x + 1
break
}
我觉得这个问题很混乱,你想生成一个带有相应符号的数字组合列表吗? 如果是这样,我可能会这样做:
signs <- data.frame(A = c("+", "+", "+"),
B = c("+", "+", "-"),
C = c("+", "-", "+"),
D = c("-", "+", "-"),
E = c("-", "-", "+"),
F = c("-", "-", "-"))
values <- c(280, 140, 70)
apply_signs <- function(signs, values){
mapply(function(signs, values) do.call(get(signs), list(values)),
signs = signs,
values = values)
}
apply(signs, 2, apply_signs, values = values)
如果我完全误解了你,请澄清并提供可重现的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.