2013-10-08 52 views
3

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

我试过这个代码,但它没有工作:

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

有人可以帮我解决这个问题的代码?该计划还很新颖。

编辑:我已经尝试过下面的度量代码,它的工作原理很不幸,其中一个csvs只包含头文件而没有数据。我得到这个错误:cor(u [,2],u [,3])中的错误:'x'为空

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

+0

仅供参考:'i'的例子上面不是迭代器,只是数字的一个vecotr(一个“列表”)。你需要对它们进行迭代。例如:'for(j in i)'或者'for for(j in 1:2)'或'for for(in in 1:2)' –

回答

7

x包含所有数据框的列表。在下面的例子中,我用了两个dataframes从R.(mtcars和虹膜)

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 
+3

如果给列表元素赋予名字,结果会更具可读性: 'X <-list(mtcars = mtcars,虹膜=虹膜)' – juba

相关问题