我需要编写一个包含三个参数的函数:dat-数据帧名称,mainVar-用于计算第三个变量之间的相关性的字符向量,以及varlist-包含一个或多个值的字符向量。
该函数将返回一个数据帧,其中包含相关系数和相应的 每对之间的p值。
我想要实现的示例:
myCortest (chol, "wt", "age")
var1 var2 R p
age wt age 0.6660014 5.631448e-26
到目前为止我所拥有的:
myCortest <- function(dat, mainVar, varlist){
result <- data.frame()
for (i in 1:length(mainVar)){
foo <- cor.test(dat$mainvar, dat$varlist)
r <- data.frame(Varname = mainVar[i],
R <- as.vector(foo$estimate[1]),
P <- foo$p.value)
result <- rbind(result, r)
}
return(result)
}
我的代码无法运行,所以我知道我做错了什么。如何获得所需的输出?
答案 0 :(得分:1)
如果我的目标正确,这是一个sa(i)mple函数:
myCortest <- function(dat, mainVar, varlist){
foo<-lapply(varlist,function(x){foo1<-cor.test(get(mainVar,as.environment(dat)),
get(x,as.environment(dat)))
data.frame(Var1=mainVar,Var2=x,
p.value=foo1$p.value,R.Sq=foo1$estimate)
})
foo
}
测试:
myCortest (iris, "Sepal.Length", c("Petal.Length","Sepal.Width"))
输出:
[[1]]
Var1 Var2 p.value R.Sq
cor Sepal.Length Petal.Length 1.038667e-47 0.8717538
[[2]]
Var1 Var2 p.value R.Sq
cor Sepal.Length Sepal.Width 0.1518983 -0.1175698