在列表中的多个数据帧上应用lapply,R

时间:2013-10-08 13:39:25

标签: r

我在列表u中有一个类似数据帧的列表(4列,都有相同的标题),并且想要运行一个lapply函数来获得每个数据帧的第2列和第3列的相关性。我希望函数读取任何整数i(列表有300+ csvs)。

我已经尝试过这段代码,但它没有奏效:

i<-1:2
for (i) lapply(u, cor(u[[i]][,2],u[[i]][,3]))  

有人可以帮我解决这个问题吗?该计划仍然相当新。

编辑:我在下面尝试了Metrics代码并且它可以工作,不幸的是其中一个csv只包含标题而没有数据。我收到此错误:cor(u [,2],u [,3])出错:'x'为空

反正是否可以修改sapply,以便在没有任何可用数据时“cor”函数返回0?

1 个答案:

答案 0 :(得分:7)

x包含所有数据帧的列表。在下面的示例中,我使用了来自R的两个数据帧(mtcars和iris)

list(mtcars=mtcars,iris=iris)
lapply(x,function(x)cor(x[,2],x[,3]))
[[1]]
[1] 0.9020329

[[2]]
[1] -0.4284401

或者,如果你想要矢量输出:

sapply(x,function(x)cor(x[,2],x[,3]))
[1]  0.9020329 -0.4284401