Как удалить двойные кавычки вокруг значений NULL в write.csv? - PullRequest
1 голос
/ 30 сентября 2010

Я работаю над экспортом data.frame в csv для использования в системе электронной коммерции после того, как провел некоторый анализ.

Я удаляю значения NA перед извлечением, поскольку они не разрешены в системе, к которой я добавляю данные.Процесс, который у меня есть, выглядит следующим образом, мой data.frame называется prod_out:

prod_out[is.na(prod_out)] <- c("")

prod_con<-file('product_output.csv',encoding="utf8")

write.csv(prod_out,file=prod_con,append=FALSE,eol="\r",quote=TRUE,row.names=FALSE)

Это создает файл, однако для полей, которые имеют значение NULL, все они заключаются в двойные кавычки, как это:

...,"",...

Мне не нужно иметь двойные кавычки для полей NULL и оставить их для любого символьного поля, например:

...,,...

Я изменил кавычку = ЛОЖЬ, однако это удалило все двойные кавычки, и янужно, чтобы поля символов оставались нетронутыми.Можно ли как-нибудь расставить NULL-значения в кавычки?

Любая помощь приветствуется.

Спасибо,

Джейсон

Ответы [ 2 ]

5 голосов
/ 30 сентября 2010

попробуйте это:

df<-data.frame(w=c("a","b"),x=runif(2),y=rep(NA,2),z=runif(2))
write.csv(df,na="",quote=TRUE,row.names=FALSE)
1 голос
/ 30 сентября 2010

Во-первых, полезно знать, если вы еще не поняли, что «NA» и NA - это не одно и то же:

> x = c(3, 4, 5, 7, 12, "NA", "NA", 12, 43)
> x
[1] "3"  "4"  "5"  "7"  "12" "NA" "NA" "12" "43"
> is.na(x)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

> # now convert each "NA" to NA
> x[x=="NA"] = NA
> x
[1] "3"  "4"  "5"  "7"  "12" NA   NA   "12" "43"
> is.na(x)
[1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE

В сумме «убрать двойные кавычки» из каждого NA, вам нужно конвертировать «NA» в NA, как указано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...