首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用write.table创建包含逗号字段的制表符分隔文件

使用write.table创建包含逗号字段的制表符分隔文件
EN

Stack Overflow用户
提问于 2019-02-26 19:41:58
回答 2查看 55关注 0票数 1

我正在尝试使用write.table将包含已安装软件包的数据框写入以制表符分隔的文件:

代码语言:javascript
复制
ip <- as.data.frame(installed.packages())
rownames(ip) <- NULL
write.table(ip,file="installed_packages.tsv",quote = F,sep = "\t",row.names = F)

不幸的是,这似乎会产生一个文件,其中字段中的逗号有时会导致创建一个新行。然而,这并不一致。引用字段没有区别。有谁有什么想法吗?Edit:添加了一个中断输出的示例,改为使用quote =T:

代码语言:javascript
复制
"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)。所以这跟文本编辑器有关系...

EN

回答 2

Stack Overflow用户

发布于 2019-02-26 19:51:21

您可以使用以下命令直接写入数据帧:

代码语言:javascript
复制
 write.csv(ip,"installed_packages.csv")

在这里,字段中的逗号不会导致创建新行。

票数 0
EN

Stack Overflow用户

发布于 2019-03-07 23:12:30

我认为这应该能起到作用:

代码语言:javascript
复制
a <- installed.packages()
a <- a[, 1]
names(a) <- c() # optional line
write.table(a, "installed.tsv", quote = F, sep = "\t", row.names = F)

installed.packages()的结果是一个乱七八糟的矩阵,因此您需要正确地设置它的子集,以获得所有包的向量。

结果为R:

代码语言:javascript
复制
[1] "abind"               "Amelia"              "ape"              "assertthat"         
[5] "backports"           "base"                "base64enc"        "BBmisc"             
[9] "BelgiumMaps.StatBel" "BH"                  "bindr"            "bindrcpp"    

结果为TextEdit (Mac):

代码语言:javascript
复制
abind
Amelia
ape
assertthat
backports
base
base64enc

希望它能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54884748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档