2014-09-24 82 views
2

嗨,我想加载到R几个.sas7bdat格式的数据库。每次加载新数据库时,我都想显示它的名称(例如file.sas7bdat - > file)。我在R中编写了一个代码(如下所示),但它不起作用。我认为它会用新的数据库覆盖现有的数据库。我将不胜感激任何有关如何改进它的建议。如何在不覆盖现有文件的情况下将多个文件加载到R中?

getwd() 
files<-list.files(pattern="*.sas7bdat") 
for (i in 1:length(files)) { 
    data[i]<-read.sas7bdat(files[i]) 
} 

回答

2

我没有任何sad7bdat文件得心应手,但这个概念应该在大部分的read.*功能转换。你在正确的轨道上的for循环,但可以直接使用lapply()像这样创建列表:

#Make a few CSV files 
x <- matrix(rnorm(10), ncol = 2) 
write.csv(x, "a.csv") 
write.csv(x, "b.csv") 

#Read them into a list 
fileList <- lapply(list.files(pattern = "*.csv"), function(x) read.csv(x)) 

#check out what we ended up with 
str(fileList) 
#--- 
List of 2 
$ :'data.frame': 5 obs. of 3 variables: 
    ..$ X : int [1:5] 1 2 3 4 5 
    ..$ V1: num [1:5] -0.451 -0.317 -1.225 0.445 -1.361 
    ..$ V2: num [1:5] 0.489 -2.8154 0.5147 -0.0561 0.826 
$ :'data.frame': 5 obs. of 3 variables: 
    ..$ X : int [1:5] 1 2 3 4 5 
    ..$ V1: num [1:5] -0.451 -0.317 -1.225 0.445 -1.361 
    ..$ V2: num [1:5] 0.489 -2.8154 0.5147 -0.0561 0.826 
0
library(sas7bdat) 

setwd(".... WHERE SAS FILES LIVES...") 

load.sas <- function(x) { 
    name <- strsplit(x,"\\.")[[1]][1] 
    assign(name, read.sas7bdat(x), env=.GlobalEnv) 
    TRUE 
} 

sapply(list.files(path=".", pattern="*.sas7bdat", full.names=F), load.sas)` 

您可以添加任何期货这个代码revrite只有一些数据或。 ...

相关问题