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

zdwk9cvp  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(130)

我有以下的优点和缺点:
我想迭代下面代码的每个组合

tbl44 <- tbl4 %>%
  top_n(280) %>%
  top_n(140) %>%
  top_n(70) %>%
  slice_head(n = 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
}
tyu7yeag

tyu7yeag1#

我觉得这个问题很令人困惑,你想生成一个数字与相应符号的组合列表吗?如果是的话,我可能会这样做:

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)

如果我完全误解了你,请澄清并提供一个可重现的问题。

相关问题