R 如何从多个xls文件构建数据帧?

R 如何从多个xls文件构建数据帧?,r,loops,dataframe,xls,R,Loops,Dataframe,Xls,我正在尝试从我下载的几个xls表中构建数据帧: states <- c("A","B","C","D") for(i in states){ download.file(paste("http://www.web.com/state=",i,".xyz",sep=""),paste("temp",i,".xls",sep=""),mode = "wb") } 它工作正常,但我不知道这一步之后该做什么(或者我是否可以让它更简单)。接下来我想做的是在循环

我正在尝试从我下载的几个xls表中构建数据帧:

states <- c("A","B","C","D")

for(i in states){
download.file(paste("http://www.web.com/state=",i,".xyz",sep=""),paste("temp",i,".xls",sep=""),mode = "wb")              
    }
它工作正常,但我不知道这一步之后该做什么(或者我是否可以让它更简单)。接下来我想做的是在循环中将
state
重命名为
stateA、stateB
,等等,但我不知道怎么做。重命名各个数据帧后,我将使用
rbind
将它们设置在一起


你有什么想法吗

在R中有效的一般策略是将您的内容加载到列表中:

state_list = lapply(list.files(pattern = "xls"), read.xls, sheet = 1, etc)
big_df = do.call("rbind", state_list)
或者使用
plyr
,甚至更短:

library(plyr)
big_df = ldply(list.files(pattern = "xls"), read.xls, sheet = 1, etc)

请注意,此处没有针对循环的明确说明
,代码非常简短且切中要害。

gdata的
read.xls
可以一次下载并从internet读取文件
read.xls
调用:

urls <- sprintf("http://www.web.com/state=%s.xyz", states)
L <- lapply(urls, read.xls, ...other.read.xls.arguments...)
names(L) <- states
DF
的行名将指示每行来自哪个状态。可选地,可以这样添加一个新列(其中
sub
删除行名称的行号部分):


DF$state Hmmm,实际上我已经试过了,但是我得到了一个错误:
xls2sep(xls,sheet,verbose=verbose,…,method=method,:中间文件'C:\Users\temp\fileB0085260506.csv'丢失!另外:警告消息:正在运行命令''C:\Perl\Perl\bin\Perl.exe”“C:/Users/../R/win library/2.15/gdata/Perl/xls2cv.pl““tempCE.xls”C:\Users\temp\fileB0085260506.csv“1”在文件中有状态255错误。存在(tfn):无效的“file”参数
请创建一个可复制的示例,在我们的计算机上复制您的问题。
urls <- sprintf("http://www.web.com/state=%s.xyz", states)
L <- lapply(urls, read.xls, ...other.read.xls.arguments...)
names(L) <- states
DF <- do.call(rbind, L)
DF$state <- sub("\\.\\d*$", "", rownames(DF))
rownames(DF) <- NULL