应用两个数据框

Mik*_*war 7 r apply

我正在使用R,我有两个data.frames,AB.它们都有6行,但A有25000列(基因),B有30列.我想申请一个函数有两个参数f(x,y),其中x为每列Ay为每一列B.到目前为止它看起来像这样:

i = 1
for (x in A){
    j = 1
    for (y in B){
        out[i,j] <- f(x,y)
        j = j + 1
    }
    i = i + 1
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:从我的Python编程中,我将跟踪这样的计数器作为关键,并且从我的R编程中我对循环感到紧张.但是,我不太明白如何申请apply(或者即使我应该申请apply)这个问题,并希望有人可以启发我.我现在需要将其f()视为原子(实际上是cor.test()).

Abh*_*jit 7

由于您使用的是数据框,因此使用lapply或sapply执行此操作可能会更快(特别是在数据框范围内).例如,

x <- data.frame(col1=c(1,2,3,4), col2=c(5,6,7,8), col3=c(9,10,11,12))
y <- data.frame(col1=c(1,2,3,4), col2=c(5,6,7,8))
bl <- lapply(x, function(u){
   lapply(y, function(v){
       f(u,v) # Function with column from x and column from y as inputs
   })
})
out = matrix(unlist(bl), ncol=ncol(y), byrow=T)
Run Code Online (Sandbox Code Playgroud)