R: использовал "write.csv" внутри цикла, но R не будет читать его обратно в - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть короткий цикл, который я использовал для создания нескольких файлов .csv. Цикл работает и файлы созданы правильно, и я могу открыть их в Microsoft Excel. Все выглядит отлично. Но когда я пытаюсь прочитать эти файлы обратно в R в другом скрипте, R не распознает их.

Вам нужно отключить какой-то драйвер внутри цикла, как если бы вы создавали несколько файлов png?

Вот цикл (работает). Для справки: dtlm - это большой массив данных с несколькими столбцами, включая «diag», «county» и «date» и «Freq».

single = c("492", "493", "427", "428", "786")
for (q in 1:length(single))  {
    xx = xtabs(~date+county, data=dtlm, subset = dtlm$diag == single[q])
    xy=as.data.frame(xx)
    write.csv(xy, paste(single[q], ".csv", sep=""))
}

Теперь вот пример команды, с которой R не может распознать файл:

dt <- read.csv("C:/Users/myname/Desktop/FreqTables/492.csv")

Так странно! Я также попробовал read.table, и это тоже не сработало, и я не нашел ничего полезного в? Read.csv. Любые предложения будут с благодарностью!

1 Ответ

1 голос
/ 01 апреля 2012

Это как обычно,

## store the path in some object, here 'dir'
dir <- "[path to the folder where you have your data]"

## then pick up the file names from the 'dir,' change the filter as needed
fnames <- list.files(path = dir, pattern = ".csv")

## read the data into a list
dfn = list()
for (string in fnames){
dfn[[string]]=read.csv(paste(dir,string,sep = ""))
}

Возможно, вы можете сделать это в несколько строк, но это работает для меня.

Если вы хотите объединить файлы вместе, вы можете использовать что-то вроде этого, обратите внимание, что я ввожу имя файла из файлов CSV

## remove the .csv suffix
names(dfn) <- strsplit(names(dfn),".csv")

## merging the data frames together (traditional)
DF <- dfn[[1]]
for ( .df in dfn) {
DF <-merge(DF, .df, by.x="ID", by.y="ID", all.x=T,
           suffixes=paste(":", names(dfn), sep = ""))
}    

Дайте мне знать, если это работает для вас.

Лучший, Eric

...