繁体   English   中英

R中针对不同变量组合的循环函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM