R:在用户定义的函数中构建数据框

时间:2011-07-05 08:58:35

标签: r

我在R中定义函数时遇到了一个问题。我试图将for循环的内容转换为函数,这样我就可以lapply将函数转换为函数列表,(并依次使用mclapply包{/ 1}}

我需要逐行构建一个数据框,从函数中一次获取一个文本和一个数值。我从之前的帖子中了解到,我必须以某种方式返回值,因为R的传递和复制而不是传递参考方案(参见:How to add a column in the data frame within a function

以下是我正在做的简化版本:

multicore

任何人都知道如何返回letters <- c('aa', 'bb', 'cc', 'aa', 'bb', 'dd', 'cc', 'dd', 'ee', 'ee') numbers <- 1:10 madeup <- data.frame(letters, numbers) output <- data.frame() functest <- function(x) { subtest <- subset(madeup, letters==x) if (nrow(subtest==2)){ calc <- subtest$numbers[2] - subtest$numbers[1] ...WHAT GOES HERE?... } } x,以便我可以calc将这两个值分别rbind数据框的新行?

如果我可以从函数中复制这两个值,我想象执行命令看起来像---

output

---但很高兴能够对此予以纠正!

1 个答案:

答案 0 :(得分:2)

rbind data.frames return(data.frame(x,calc))我的经历非常缓慢,但无论如何:用data.fame替换占位符。

更改功能后,可能最简单的方法是将它们全部合并到一个output<-do.call(rbind, lapply(letters, functest)) 中:

{{1}}