2

我正在使用最新版本的 R-Studio。

我创建了一堆数据框,我想测试它们的相关性。创建数据框后,我创建了一个变量u,表示所有数据框的范围。我想创建一个循环来遍历每个循环并data.frame进行u以下测试corr(data.frame)

我有以下代码:

corrvals <- NULL
for (i in seq(along=u[])) {
corrvals <- corr(u)
}

我发现了一些类似于我想在这里做的事情

问题是,所有的data.frame's 都是按照我想要的方式设置的,我只是想运行data.frame列表中的每个并在其corr上运行函数。

我还想打印出 data.frame 的名称及其相关值,如下所示:

data.frame Corr
ac         -0.03445345
af          0.023429
.
.
.
n           corr(n)

放入我的空储物容器中corrvals

谢谢你

4

2 回答 2

4

我建议将您的 data.frames 放入列表中,然后运行lapply​​. 像这样:

# setting up a reproducible example
data(mtcars)
data(iris)
# remove the last column cause it ain't numeric.
iris <- iris[,-5]
listOfDataFrames <- list()
listOfDataFrames[[1]] <- mtcars
listOfDataFrames[[2]] <- iris

# here's a one liner using base R. 
lapply(listOfDataFrames,cor)

欢迎来到 SO,顺便说一句。啊,我猜你的意思是cor,对吧?然而,这基本上适用于任何功能。

于 2013-03-21T14:29:30.370 回答
4

我似乎lapply在这里发布了很多。这是一个方便的包装器,它隐藏了循环,但正是你想要的......

编辑

多一点参与,因为你想要的名字。该corr功能也来自包boot

u <- list( df1 , df2 , df3 )
attr(u, "names") <- c("df1","df2","df3")
require( boot )
res <- lapply( u , function(x) { names(x) ; corr(x) } )

res
#$df1
#[1] 0.353647

#$df2
#[1] 0.4494202

#$df3
#[1] -0.003907642
于 2013-03-21T14:29:37.817 回答