2013-11-26 14 views
9

Moja sytuacja polega na tym, że próbuję zapisać ramkę danych złożoną z kolumn, które mają różne typy danych do pliku csv w R. Kod, którego używam do napisania pliku, jest :Jak kontrolować podwójne cudzysłowy przy zapisywaniu plików R .csv

filename = file("equipment.csv") 
write.csv(file = filename, x = equipment, quote = FALSE, row.names = FALSE) 

Powoduje to problemy później, gdy próbuję załadować plik CSV do bazy danych SQL, ponieważ niektóre kolumny zawierają ciągi zawierające znaki ",". Jeśli ustawię quote = TRUE w powyższym kodzie, spowoduje to problemy dla moich typów danych numerycznych po załadowaniu do bazy danych.

Moje pytanie: czy istnieje sposób kontrolowania sposobu, w jaki R dodaje cytaty do kolumn podczas pisania plików CSV? Chciałbym móc dodać cytaty wokół ciągów, ale nie dla innych typów danych.

Wielkie dzięki za pomoc.

+0

To odpowiedź, której szukałem, dziękuję za pomoc. Problemem, który mam, jest to, że R cytuje numeryczne typy danych, a także ciągi, co sprawia mi kłopot z obciążeniem moich danych. Proponowane rozwiązanie wydaje się skuteczne. – Sledge

+0

Częścią problemu może być również to, że niektóre z moich typów kolumn typu klasy: czynnik, które mogły pozwolić na niektóre z widocznych niespójności, które opisujesz. – Sledge

Odpowiedz

9

określić kolumny, które mają być podane jak to

write.csv(file = filename, x = equipment, quote = c(2,3), row.names = FALSE) 

PS: Jeśli chcesz automatycznie wypracować które kolumny zostawić w spokoju, można zrobić to tak:

non_numerics<-adply(1:ncol(equipment),1,function(x)print(is.numeric(equipment[,x]))) 
quote_val<-as.numeric(array(non_numerics[which(!non_numerics$V1),1])) 

filename = file("equipment.csv") 
write.csv(file = filename, x = equipment, quote = quote_val, row.names = FALSE) 
+0

Właśnie widziałem twoje dodatkowe komentarze, skończyło się na robieniu czegoś podobnego do tego, więc nie musiałem sprawdzać każdej kolumny dla wyjątków. Moja jedyna skarga na temat write.csv() polega na tym, że nie było oczywiste, jak wpływać na cytaty kolumn, pozostawiając niepoliczone nazwy kolumn. Cytaty z nazwami kolumn wydają się być rzeczami typu "wszystko albo nic" ... – Sledge

Powiązane problemy