让我再试一次,我将省略确切的数据/示例,并完成我需要完成的工作。
我需要在data.frame的行上应用一个函数,这很容易。然后我需要使用传递给它的data.frame在该函数中派生一些变量。最后,我想在data.frame的子集上应用一个新函数,并在新函数中使用派生变量。
有人可以告诉我这样做的最佳实践方法,而不是全局确定每个变量(var1,var2)吗?
cpt <- a.data.frame
query.db <- function(another.data.frame){
var1 <- some.values
var2 <- some.other.values
apply(cpt[var1,], 1, calc.enrichment) #calc.enrichment needs to access var1, var2!
}
我尝试将calc.enrichment函数编写为用户定义的函数而不是作用域之外,但我的参数列表(var1,var2)未被识别。谢谢你的帮助。
答案 0 :(得分:1)
这个愚蠢的例子对我有用,似乎可以解决你所追求的问题。我们使用var1
来索引apply函数中使用的data.frame的列。 var2
只是传递给它的data.frame的第一列的标准偏差。我猜你的真实例子做了一些更有用的事情。
cpt <- data.frame(a = rnorm(5), b = rnorm(5), c = rnorm(5))
another.data.frame <- data.frame(d = rnorm(5), e = rnorm(5), f = rnorm(5))
query.db <- function(dat, outer.dat) {
var1 <- sample(1:nrow(dat), sample(1:nrow(dat), 1, FALSE), FALSE)
var2 <- sd(dat[, 1])
apply(outer.dat[var1 ,], 1, function(x) apples = x * sin(var2) / cos(var2) ^ 2)
}
query.db(another.data.frame, cpt)