在具有不同输入数量的多个数据框架上应用函数列表

时间:2015-06-11 06:58:00

标签: r dataframe apply sapply mapply

关于this question,我想知道是否可以根据功能使用多个数据帧。我的意思是,在链接问题的示例中,我们仅讨论过meansd。如果需要向其他两个函数添加两个样本t-test,除了用于data.framemean的{​​{1}}之外,我们还需要使用另一个sd

在这种情况下你有什么建议吗?

从链接的线程中复制示例:

# Random generation
set.seed(12)
df1 <- data.frame(col1 = sample(1:100, 10, replace=FALSE), 
                 col2 = sample(1:100, 10, replace=FALSE))
set.seed(16)
    df2 <- data.frame(col3 = sample(10:90, 10, replace=FALSE), 
                     col4 = sample(10:90, 10, replace=FALSE))

# Introducing null values
df1$col1[c(3,5,9)] <- NA
df1$col2[c(3,6)] <- NA
df2$col3[c(5,8)] <- NA
df2$col4[c(4,5,9)] <- NA

# sapply with return a value for a function
stat <- data.frame(Mean=numeric(length = length(df1)), row.names = colnames(df1))
stat[,c('Mean','Sd')] <- vapply(df1,function(x) c(mean(x,na.rm=TRUE),sd(x,na.rm=TRUE)),numeric(2))

如何在此中加入函数t.test(df1$col1,df2$col3)

funs <- list(sd=sd, mean=mean)
sapply(funs, function(x) sapply(df1, x, na.rm=T))

预期输出:(类似于数据框2x5中的以下内容)

mean(col1) sd(col1) mean(col3) sd(col3) t.test(col1,col3)$p.value
mean(col2) sd(col2) mean(col4) sd(col4) t.test(col2,col4)$p.value

0 个答案:

没有答案