我在R中定义函数时遇到了问题。我试图将for
循环的内容转换为函数,以便我可以将lapply
函数的列表,(以及在使用所述包multicore
转mclapply
)R:在用户定义的函数中构建数据框
我需要通过行建立一个数据帧的行,同时一个文本和一个数值在从函数的时间。我从以前的帖子了解到,我必须以某种方式返回值,因为R的传递和复制而不是传递参考方案(请参阅:How to add a column in the data frame within a function
下面是我正在做的简化版本:
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
数据帧的新行?
如果我可以复制在这两个值函数,我在想象执行命令会看起来像---
output <- rbind(output, [mc]lapply(letters, functest))
---但很高兴能纠正这个!
如果(nrow(分测验== 2))可能不是你的意思,但它不是真的无论如何,清除你的问题,以便清楚你想要的功能是什么,看起来你想通过传入x来发生某些事情,“subtest”是来自“madeup”的两行,但是。 。 。如何发布你想要转换的for循环,所以我们至少有这样的? – mdsumner
@mdsumner嗨 - 'if(nrow(subtest == 2))'就是我的意思 – cainesap
@mdsumner(oops,没有意识到返回添加评论;道歉..新手..)所以,是的,如果声明就是我的意思,我决定展示for循环的类比,因为我正在使用的是不容易重现的。我需要的是x值有2行,并显示减法计算的结果..这样我就可以把它们放在一个数据框中 – cainesap