2013-10-15 1 views
4

У меня есть список файлов (не сделанных мной), которые по какой-либо причине помечены как «.csv», хотя некоторые из них являются csv, а некоторые - разделителями на вкладке. Поэтому, когда я пытаюсь прочитать их в R, мне нужно будет указать разделитель вручную. Если кто-то не знает, есть ли способ проверить это, прежде чем я получаю искаженный файл для чтения в.Проверьте, как файл делится перед чтением в R

+8

'fread' в пакете data.table делает попытку угадать правильный разделитель. – joran

+0

удивительный. Гораздо лучше, чем if (grepl ("\ t", check.file [1,]) [1]) check.file <- read.table (проверяет [i], header = T, sep = "\ t") Я читал его в CSV. Спасибо, Джоран! – cianius

ответ

9

Если бы поместить это в ответе ...

fread функции в пакете data.table делает попытку угадать правильный разделитель. Это, вероятно, не идеально, но, скорее всего, справится с большинством простых случаев.

6

Поскольку вкладки не особенно вероятно, будет в данных, если там в качестве разделителя не может сделать это, как правило, правильный тест:

dat <- if("\t" %in% strsplit(readLines("path/fil.csv", n=1)[1], split="")[[1]]) { 
    read.table("path/fil.csv", sep="\t") }else{ 
    read.table("path/fil.csv", sep=",") } 

(Ханделс только случай, либо «\ т» или «» как описано.) Тестирование:

> dat <- if("\t" %in% strsplit(readLines(textConnection("a\tb\tc\nd\te\tf"), n=1)[1], split="")[[1]]) { 
+  read.table(textConnection("a\tb\tc\nd\te\tf"), sep="\t") }else{ 
+  read.table(textConnection("a,b,c\nd,e,f"), sep=",") } 
> dat 
    V1 V2 V3 
1 a b c 
2 d e f 
Смежные вопросы