繁体   English   中英

R:在两个 data.frames 上使用 apply

[英]R: using apply over two data.frames

我想使用 apply 而不是 for 循环。 问题是,我的 for 循环使用两个 data.frames 作为输入。 例如:

x <- data.frame(col1=c(1,NA,3,NA), col2=c(9,NA,11,12))
y <- data.frame(col1=c(1,2,3,4), col2=c(5,6,7,8))
output <- rep(NA,2)
for(i in 1:2)
{
  output[i] <- sum(is.na(x[,i]))+sum(y[,i])
}

这里的结果是正确的 c(12,27)。

但是,如果我尝试函数并应用:

test <- function(vector1,vector2) sum(is.na(vector1))+sum(vector2)
apply(x,y,MARGIN=2,FUN=test)

使用 apply 结果是 c(38,37)。 我怎样才能解决这个问题?

您可以使用 mapply 而不是 apply:

x <- data.frame(col1=c(1,NA,3,NA), col2=c(9,NA,11,12))
y <- data.frame(col1=c(1,2,3,4), col2=c(5,6,7,8))
test <- function(vector1,vector2) sum(is.na(vector1))+sum(vector2)
mapply(test, x, y)

# col1 col2 
#   12   27 

?mapply

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM