2015-11-01 5 views
0

Я новичок в R и у меня есть этот proplem: у меня есть набор файлов csv, каждый из которых имеет 3 столбца с числовыми значениями. Я пытаюсь запустить набор инструкций для создания категорий, которые позволяют мне выравнивать графики каждого из файлов. Это до сих пор мой набор команд:Не удается прочитать файл csv

myFiles<-dir("C:\\Data\\") 
myDeadVols<-as.matrix(read.csv("C:\\Data\\Dead Volumes.csv", header=T, sep="|", row.names=1)) 

myDeadVolsVec <- as.numeric(myDeadVols[,"t2_min"])*60 + as.numeric(myDeadVols[,"t2_s"]) 

names(myDeadVolsVec) <- myDeadVols[,"fileName"] 

sampAnot <- names(myDeadVolsVec) 

names(sampAnot) <- sampAnot 

polyRead <- function(fileNames=NULL, mySep="|"){ 

dataList <- list() 

for(tmpName in fileNames){dataList[[tmpName]] <-as.matrix(read.table(tmpName, header=TRUE, sep=mySep))} 
return(dataList)} 

polyReadMaritza <- function(fileNames=NULL, mySep="|", file2void=NA, fracTime=35, dataPerFrac=173){ 

dataList <- list() 
for(tmpName in fileNames){ 
tmpMat<-as.matrix(read.table(tmpName, header=FALSE, sep=mySep)) 
tmpVoidTime<-file2void[tmpName] 
tmpVoidPoints<-tmpVoidTime/fracTime*dataPerFrac 
tmpAdder<-matrix(ncol=3, nrow=as.integer(tmpVoidPoints), data=0) 
tmpMat<-rbind(tmpAdder, tmpMat) 
tmpEvent<-rep(0, dim(tmpMat)[1]) 
fractMoves<-c(1:length(tmpEvent))[which(c(1:length(tmpEvent))%%dataPerFrac==0)] 
tmpEvent[fractMoves]<-1 
tmpMat[,3]<-tmpEvent 
dataList[[tmpName]] <- tmpMat 
colnames(dataList[[tmpName]])<-c("Distance.mm.", "Absorbance", "Event")} 
return(dataList)} 

До сих пор все, кажется, хорошо, но когда я пытаюсь войти в fllowin команду:

myDataList <- polyReadMaritza(myFiles, mySep="\t", file2void=myDeadVolsVec) 

У меня есть эта ошибка:

Error in file(file, "rt") : cannot open the connection. In addition: Warning message:In file(file, "rt") : cannot open file 'Beads.csv': No such file or directory

Теперь путь к «Beads.csv» - это C: \ Data \ Beads.csv, поэтому я думаю, что это потому, что он не читает полный путь к «Beads.csv» (который является первым из файлов), но я подумал, что с "myFiles < -dir (" C: \ D ata \ ")" Я уже указал путь. Любая помощь приветствуется

+1

Отметьте свои строки кода на 4 пробела, чтобы получить правильное форматирование на SO. Весь код должен быть минимальным, автономным и полным, включая все операторы библиотек, если они есть, и все входы. Эти 3 ссылки содержат больше вопросов о том, как задавать вопросы: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example http://stackoverflow.com/help/ mcve http://stackoverflow.com/help/how-to-ask –

ответ

1

Фактически вы получили список файлов в нужном каталоге.

fileDir = 'C:/Data' 
myFiles = list.files(path=fileDir, pattern='*.csv') 

Затем, когда вы звоните read.csv вы должны дать R полный путь файла с ...

for(file in myFiles){ 
    read.csv(file.path(fileDir,file)) 
} 
+0

Я попытался изменить для \\, и у меня была та же проблема – Tarku

0

Значение, возвращенное dir не включают пути. Значение по умолчанию для «full.names» в dir является FALSE, поэтому, если ваш рабочий каталог не является «c: // Data //», вызов read.csv будет отображаться не в нужном месте. Попробуйте:

myFiles <- dir("C:\\Data\\", pattern= "[.]csv", full.names-TRUE) 
+0

Thnak вам очень понравилось, это привело меня к дальнейшему процессу, но теперь у меня есть еще одна ошибка : Ошибка в матрице (Ncol = 3, nrow = as.integer (tmpVoidPoints), данные = 0): недействителен 'nrow' значение (слишком большой или NA) Это странно, потому что я stablishin мои строки, как: nrow = as.integer (tmpVoidPoints) – Tarku

+0

Ожидаемый ответ на обнаружение ошибки и предлагая эффективную консультацию, это повысить или проверить ответ. Если у вас возникла новая проблема, не связанная с первой проблемой, тогда пришло время для нового вопроса, который должен иметь правильное описание того, какой файл обрабатывается. –

Смежные вопросы