我在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
---但很高兴能够对此予以纠正!
答案 0 :(得分:2)
rbind
data.frames
return(data.frame(x,calc))
我的经历非常缓慢,但无论如何:用data.fame
替换占位符。
更改功能后,可能最简单的方法是将它们全部合并到一个output<-do.call(rbind, lapply(letters, functest))
中:
{{1}}