【发布时间】:2017-02-16 14:06:33
【问题描述】:
我有一个非常大的数据集,想编写一个经济的数据分析代码。
这里是一个说明的例子
df <- data.frame(
ID = factor(sample(c("A","B","C","D","E","F","G"), 20, replace=TRUE)),
a1 = runif(20),
a2 = runif(20),
a3 = runif(20),
a4 = runif(20),
b1 = runif(20),
b2 = runif(20),
b3 = runif(20),
b4 = runif(20))
我想像这样进行配对样本 t 检验(示例):
t.test(df$a1, df$b1, paired=TRUE, na.rm=TRUE)
t.test(df$a2, df$b2, paired=TRUE, na.rm=TRUE)
这可行,但我想要更短的代码并尝试过:
object_a <- paste("a", 1:4, sep="")
object_b <- paste("b", 1:4, sep="")
t.test.func.paired <- function(x) {
t.test(x, y, paired = TRUE, na.rm=TRUE)
}
df %>%
select_(.dots = c(object_a, object_b)) %>%
sapply(., t.test.func.paired) %>%
.[c("statistic", "parameter", "p.value"), ] %>%
View()
不幸的是,这不起作用。但是错误在哪里? 谢谢!
【问题讨论】:
-
您可以使用
df[, "a1"],而不是df$a1。然后你的粘贴就可以了。作为替代方案,您可以将 A 和 B 存储在单独的列表中,然后按位置引用列表元素。
标签: r statistics dplyr