【问题标题】:iteration in for loopsfor循环中的迭代
【发布时间】:2013-03-27 13:35:07
【问题描述】:

这是我当前的代码

dat= data.frame(a=1:10,b=1:10,c=1:10,d=1:10,e=1:10)
for (i in 1:ncol(dat)) {
    print(interaction(##...what to write here?*...##))}

我的 for 循环应该做以下事情

第一次迭代:

 interaction(dat[,1],dat[,2])

第二次迭代:

interaction(dat[,1],dat[,2],dat[,3])

第三次迭代

interaction(dat[,1],dat[,2],dat[,3],dat[,4])

等等……

我真的不介意函数是interaction 还是sum 或其他。这是第一个循环的简单原理。我在使用 aov(what to write here?) 时遇到了同样的问题,但我发现了对象的公式类型,它允许我根据 i( = 迭代对象) 编写公式。

谢谢。

【问题讨论】:

  • 我认为这个问题需要大量澄清。有没有人足够了解来充实它?
  • 我现在更加困惑了。你的问题与ggplot2无关?
  • 确实我把每个人都弄糊涂了。对于那个很抱歉 !我改变了我的问题的所有内容,包括标题。现在我觉得它会更容易理解。我想我的问题实际上应该不难!
  • 您想将这些存储为dat 的列吗?您是否尝试过一些代码并遇到问题?那段代码是什么样子的?
  • @Justin 我在上面的问题中直接添加了一些评论

标签: r for-loop iteration


【解决方案1】:

如果我正确理解您的问题,这将使您开始... 在for loop:

for (i in 2:ncol(dat)) {
  interaction(dat[,1:i])
}

您也可以使用apply 系列之一:

lapply(2:ncol(dat), 
       function(x) interaction(dat[,1:x]))

但实际上,最佳答案取决于您计划如何使用这些功能。

【讨论】:

  • 这正是我想要的!非常感谢贾斯汀!
  • 哦,我看到我们有完全相同的第二个解决方案,所以我会删除你第一次发布的我的解决方案。但我想知道,你为什么用do.call
  • 因为我没有测试我的答案并且不记得interaction 是否占用了多个列。如果它没有并且想要单独的参数,则需要do.call
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 2012-05-10
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多