R:使用两个data.frames

时间:2017-10-16 15:55:07

标签: r apply

我想使用apply而不是for-loop。问题是,我的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)

应用结果为c(38,37)。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用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