2012-11-10 17 views
0

我的问题是关于如何在来自多个文件中的数据读取时指定各列类的数据读取时,指定列类。更具体地讲,我在一次上传的文件的.xlsx 1000并将其转换使用read.xls()功能在gdata包为.csv文件。通过lapply(文件清单,read.xls)

我的做法如下:

Myfiles<-list.files() # lists all files in working directory (which contains data files) 
library(gdata) 
Mylist <- lapply(Myfiles, read.xls, header=T, 
    perl="C:/Users/A/PERL/perl/bin/perl.exe", 
    sheet=1, 
    method="csv", 
    skip=1, 
    as.is=1) 

我不提供一个可行的例子道歉。我不知道如何解决这个问题。

所有的.xlsx文件都具有相同的标题和设置,但Mylist中的数据框中的相应列的类不完全相同。 是否有可以lapply()方法我现在用中指定的类的方法吗?我知道你可以扩展read.table()read.xls()的功能,但我还没有想出如何在lapply调用中正确指定列类。

+0

你有在好像还没有合适的班级列检查的实际数据?我的猜测是,你在那里有一些违规的角色正在捣乱。你也可以在结果列表中使用'lapply()'和转换列在那里,所概述[这里](http://stackoverflow.com/questions/3796266/change-the-class-of-many-columns-in -a-数据帧)。最后,如果你只是写回到CSV,它真的很重要吗? – Chase

+1

刚刚看过的帮助页面'read.xls()'。看起来你可以通过'...'传递read.table()的附加参数。在帮助页面那里,你会看到的参数之一是'colClasses()'可以是六个原子向量类之一。这些在'vector'的帮助页面上定义。 – Chase

+1

语法是'lapply(Myfiles,read.xls,colClasses = c(...任何...),......任何......)'' –

回答

1

这一切都在的Gabor的评论,而是把这个床:

lapply(Myfiles, read.xls, colClasses = c("character", "numeric", "factor"), header=T)