【问题标题】:rbind data.frame outputs from a looprbind data.frame 循环输出
【发布时间】:2015-03-24 23:10:46
【问题描述】:

我想 rbind 生成 data.frames 的循环。这是我正在寻找的一般想法的[不正确]循环。

for (i in 1:2){
a <- c(2, (i+10))
b <- c((i+10)), 5))
c[i] <- data.frame(a,b)
}
rbind(c)

我想要这样的输出:

2  11
11  5
2  12
12  5

以前有人问过这个问题,但答案是直接解决方案,没有任何解释。我不知道怎么读。它涉及do.callmget

【问题讨论】:

  • 那么我认为这个问题是一个骗局。如果您不了解一种语言的方法,则需要阅读文档。
  • 我已经阅读了帮助文件。我还是不明白。先前的问题没有提供可重现的代码。那么我应该如何获得帮助呢?
  • 也许this 更有帮助? do.call 很有用,因为您可以按名称执行函数并传递参数列表。例如,如果您想 rbind 列表中的一堆数据框,您可以执行do.call('rbind', mylistofdataframes),希望列表可以使用lapply 或类似方法轻松创建。再举一个例子,rbind(mtcars, mtcars, mtcars)do.call('rbind', list(mtcars, mtcars, mtcars)) 是等价的
  • 你问题的措辞有点难以理解,你能回过头来告诉我们目的是什么吗?有什么特别需要使用rbind() 或生成data.frame 的吗?
  • @user3115675 您的答案正是我想要的。感谢您的帮助。

标签: r loops rbind


【解决方案1】:

您不必为此使用do.call。修改循环如下图即可:

out=NULL
for (i in 1:2){
a <- c(2, (i+10))
b <- c((i+10), 5)
c <- data.frame(a,b)
out=rbind(out,c)
}
out
#  a  b
#  2 11
# 11  5
#  2 12
# 12  5

注意:对于 b 对象,您有一堆额外的括号。那我也拿出来了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2017-07-14
    • 2018-05-29
    相关资源
    最近更新 更多