Использование write.table для создания файла с разделителями табуляции с полями, которые содержат запятые - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь записать фрейм данных, содержащий установленные пакеты, в файл, разделенный табуляцией, используя write.table:

ip <- as.data.frame(installed.packages())
rownames(ip) <- NULL
write.table(ip,file="installed_packages.tsv",quote = F,sep = "\t",row.names = F)

К сожалению, это, кажется, приводит к файлу, в котором запятые внутри поля иногда приводят ксоздание новой линии.Однако это не соответствует.Цитирование полей не имеет значения.У кого-нибудь есть какие-либо идеи?Редактировать: добавил пример неработающего вывода, используя вместо этого цитату = T:

"Package"       "LibPath"       "Version"       "Priority"      "Depends"       "Imports"       "LinkingTo"     "Suggests"      "Enhances"      "License"       "License_is_FOSS"       "License_restricts_use" "OS_type"       "MD5sum"        "NeedsCompilation"      "Built"
"abind" "/home/administrator/R/x86_64-pc-linux-gnu-library/3.4" "1.4-5" NA      "R (>= 1.5.0)"  "methods, utils"        NA      NA      NA      "LGPL (>= 2)"   NA      NA      NA      NA      "no"    "3.4.4"
"acepack"       "/home/administrator/R/x86_64-pc-linux-gnu-library/3.4" "1.4.1" NA      NA      NA      NA      "testthat"      NA      "MIT + file LICENSE"    NA      NA      NA      NA      "yes"   "3.4.4"
"addTextLabels" "/home/administrator/R/x86_64-pc-linux-gnu-library/3.4" "0.0.0.9000"    NA      "R (>= 3.4.4)"  NA      NA      NA      NA      "GPL-3" NA      NA      NA      NA      NA      "3.4.4"
"backports"     "/home/administrator/R/x86_64-pc-linux-gnu-library/3.4" "1.1.2" NA      "R (>= 3.0.0)"  "utils" NA      NA      NA      "GPL-2" NA      NA      NA      NA      "yes"   "3.4.4"
"ballgownMod"   "/home/administrator/R/x86_64-pc-linux-gnu-library/3.4" "2.5.3" NA      "R (>= 3.1.1),
methods"        "GenomicRanges (>= 1.17.25),
IRanges (>= 1.99.22),
S4Vectors (>= 0.9.39),
RColorBrewer,
splines,
sva,
limma,
rtracklayer (>= 1.29.25),
Biobase (>= 2.25.0),
GenomeInfoDb"   NA      "testthat,
knitr"  NA      "Artistic-2.0"  NA      NA      NA      NA      NA      "3.4.4"
"base64enc"     "/home/administrator/R/x86_64-pc-linux-gnu-library/3.4" "0.1-3" NA      "R (>= 2.9.0)"  NA      NA      NA      "png"   "GPL-2 | GPL-3" NA      NA      NA $
"bdsmatrix"     "/home/administrator/R/x86_64-pc-linux-gnu-library/3.4" "1.3-3" NA      "methods, R (>= 2.0.0)" NA      NA      NA      NA      "LGPL-2"        NA      NA $
"broom" "/home/administrator/R/x86_64-pc-linux-gnu-library/3.4" "0.5.0" NA      "R (>= 3.1)"    "backports, dplyr, methods, nlme, purrr, reshape2, stringr,
tibble, tidyr"  NA      "AER, akima, AUC, bbmle, betareg, biglm, binGroup, boot, brms,
btergm, car, caret, coda, covr, e1071, emmeans, ergm, gam (>=
1.15), gamlss, gamlss.data, gamlss.dist, geepack, ggplot2,
glmnet, gmm, Hmisc, irlba, joineRML, Kendall, knitr, ks,
Lahman, lavaan, lfe, lme4, lmodel2, lmtest, lsmeans, maps,
maptools, MASS, Matrix, mclust, mgcv, muhaz, multcomp, network,
nnet, orcutt (>= 2.2), ordinal, plm, plyr, poLCA, psych,
quantreg, rgeos, rmarkdown, robust, rsample, rstan, rstanarm,
sp, speedglm, statnet.common, survey, survival, testthat,
tseries, xergm, zoo"    NA      "MIT + file LICENSE"    NA      NA      NA      NA      "no"    "3.4.4"

Я отмечаю, что новая строка также создается для строки, заканчивающейся 'gam (> ='. Я также заметил, чтофайл открывается нормально в libre-office calc с полями, разделенными правильно (но только при использовании опции quote = T), но без использования nano, vi или текстового редактора ubuntu по умолчанию (с quote / T или quote = F).это как-то связано с текстовым редактором ....

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Я думаю, что это должно сработать:

a <- installed.packages()
a <- a[, 1]
names(a) <- c() # optional line
write.table(a, "installed.tsv", quote = F, sep = "\t", row.names = F)

Результатом установленного .packages () является грязная матрица, поэтому вам нужно правильно установить ее поднабор, чтобы получить только вектор всех пакетов.

Результат в R:

[1] "abind"               "Amelia"              "ape"              "assertthat"         
[5] "backports"           "base"                "base64enc"        "BBmisc"             
[9] "BelgiumMaps.StatBel" "BH"                  "bindr"            "bindrcpp"    

Результат в TextEdit (Mac):

abind
Amelia
ape
assertthat
backports
base
base64enc

Надеюсь, это поможет!

0 голосов
/ 26 февраля 2019

Вы можете напрямую написать фрейм данных, используя:

 write.csv(ip,"installed_packages.csv")

Здесь запятые внутри поля не приведут к созданию новой строки.

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