【问题标题】:Nested For-loop function objectivenot accomplished嵌套的 For 循环函数目标未完成
【发布时间】:2021-08-27 01:41:41
【问题描述】:

我有一个关于嵌套循环的问题。我需要为每个样本做第 1 行 - 第 2 行、第 1 行 - 第 3 行等。然后循环到第 2 行 - 第 3 行等,没有重复(第 4 行 - 第 4 行)或组合重复(第 4 行 - 第 3 行)。接下来,我需要将所有输出放入一个 excel 文档中。

目前使用下面的代码,我只能实现第 1 行 - 行(n)的循环。

set.seed(1) 
df <- matrix(sample.int(10, size = 10*5, replace = TRUE), nrow = 10, ncol = 4)
print(df)
df <- as.data.frame(df)  # tabulate as dataframe 
my_list <- list()

for(i in 1:nrow(df)){
  for( j in 1:nrow(df)){
    if (i != j) {
      if(i < j){ 
      my_list[[i]] <- df[i,] - df[j,]
      }
    }
  }
}
df1 <- rbindlist(my_list, fill=TRUE)

我假设有:

if (i != j) {
      if(i < j){ 

足够了,但它没有给我我想要的。

请帮忙!

【问题讨论】:

  • 只要做if(i&lt;j)...你的代码就可以工作

标签: r loops for-loop nested-loops


【解决方案1】:

您可以使用combn 获取所有可能的组合并减去它们。

do.call(rbind, combn(seq(nrow(df)), 2, function(x) {
  df[x[1], ] - df[x[2], ]
}, simplify = FALSE)) -> result

write.csv(result, 'result.csv', row.names = FALSE)

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    相关资源
    最近更新 更多