前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >解决cran R包check的note non-ASCII characters的问题

解决cran R包check的note non-ASCII characters的问题

作者头像
用户11414625
发布2024-12-20 15:33:33
发布2024-12-20 15:33:33
5300
代码可运行
举报
文章被收录于专栏:生信星球520生信星球520
运行总次数:0
代码可运行

最近cran真是折腾,tinyarray有好多细枝末节的问题要处理。这次的问题如下👇

  • checking data for non-ASCII characters ... NOTE Note: found 2 marked UTF-8 string

只能继续改了,首先是豆豆的笔记(对啊就是豆豆花花的豆豆,由于读博加带娃事务繁忙,他失踪已久,让我们投个票,👇)

如何解决R包检查中出现的non-ASCII characters问题 豆豆说检查哪个数据是非ascii码,结果我发现全部是true

代码语言:javascript
代码运行次数:0
运行
复制
files = list.files('./data',recursive = T)
sapply(files, function(f){
  load(paste0('./data/',f))
  stringi::stri_enc_isascii(f)
}) |> table()
## TRUE 
##  13 

说明我的问题比这个还深入啊!

然后搜到诗翔的笔记,解决了问题 https://shixiangwang.github.io/home/cn/post/2021-03-24-solve-marked-utf8-issue-in-r-package-check/

代码语言:javascript
代码运行次数:0
运行
复制
is_asc <- function(x) {
  x <- stringi::stri_enc_isascii(x)
  if (FALSE %in% x) {
    return(FALSE)
  } else {
    return(TRUE)
  }
}
library(tinyarray)

paste0("FALSE %in% sapply(",str_remove(files,".rda"),", is_asc)") %>% 
  writeLines()

加了上面这句代码然后我就得到了写好的命令,就不用复制粘贴了,爽!

代码语言:javascript
代码运行次数:0
运行
复制
FALSE %in% sapply(cod, is_asc)
FALSE %in% sapply(deg, is_asc)
FALSE %in% sapply(deseq_data, is_asc)
FALSE %in% sapply(exists_anno_list, is_asc)
FALSE %in% sapply(exp_hub1, is_asc)
FALSE %in% sapply(exprSet_hub1, is_asc)
FALSE %in% sapply(genes, is_asc)
FALSE %in% sapply(lnc_anno, is_asc)
FALSE %in% sapply(lnc_annov23, is_asc)
FALSE %in% sapply(meta1, is_asc)
FALSE %in% sapply(mRNA_anno, is_asc)
FALSE %in% sapply(mRNA_annov23, is_asc)
FALSE %in% sapply(pkg_all, is_asc)

发现是pkg_all有问题

代码语言:javascript
代码运行次数:0
运行
复制
> FALSE %in% sapply(cod, is_asc)
[1] FALSE
> FALSE %in% sapply(deg, is_asc)
[1] FALSE
> FALSE %in% sapply(deseq_data, is_asc)
[1] FALSE
> FALSE %in% sapply(exists_anno_list, is_asc)
[1] FALSE
> FALSE %in% sapply(exp_hub1, is_asc)
[1] FALSE
> FALSE %in% sapply(exprSet_hub1, is_asc)
[1] FALSE
> FALSE %in% sapply(genes, is_asc)
[1] FALSE
> FALSE %in% sapply(lnc_anno, is_asc)
[1] FALSE
> FALSE %in% sapply(lnc_annov23, is_asc)
[1] FALSE
> FALSE %in% sapply(meta1, is_asc)
[1] FALSE
> FALSE %in% sapply(mRNA_anno, is_asc)
[1] FALSE
> FALSE %in% sapply(mRNA_annov23, is_asc)
[1] FALSE
> FALSE %in% sapply(pkg_all, is_asc)
[1] TRUE
> FALSE %in% sapply(cod, is_asc)
[1] FALSE
> FALSE %in% sapply(deg, is_asc)
[1] FALSE
> FALSE %in% sapply(deseq_data, is_asc)
[1] FALSE
> FALSE %in% sapply(exists_anno_list, is_asc)
[1] FALSE
> FALSE %in% sapply(exp_hub1, is_asc)
[1] FALSE
> FALSE %in% sapply(exprSet_hub1, is_asc)
[1] FALSE
> FALSE %in% sapply(genes, is_asc)
[1] FALSE
> FALSE %in% sapply(lnc_anno, is_asc)
[1] FALSE
> FALSE %in% sapply(lnc_annov23, is_asc)
[1] FALSE
> FALSE %in% sapply(meta1, is_asc)
[1] FALSE
> FALSE %in% sapply(mRNA_anno, is_asc)
[1] FALSE
> FALSE %in% sapply(mRNA_annov23, is_asc)
[1] FALSE
> FALSE %in% sapply(pkg_all, is_asc)
[1] TRUE

好家伙,是你啊 继续检查发现是title的问题

代码语言:javascript
代码运行次数:0
运行
复制
sapply(pkg_all, is_asc)
##         gpl bioc_package        title 
##        TRUE         TRUE        FALSE 
#数量也对上了
> sapply(pkg_all$title, is_asc) %>% table()
##.
##FALSE  TRUE 
##    2    83 

再下一步就发现是54-55行的问题

代码语言:javascript
代码运行次数:0
运行
复制
which(!sapply(pkg_all$title, is_asc))
## GE Healthcare/Amersham Biosciences CodeLinkダス UniSet Human 20K I Bioarray 
##                                                                        54 
## GE Healthcare/Amersham Biosciences CodeLinkダス ADME Rat 16-Assay Bioarray 
##                                                                         55 
pkg_all$title[54:55]
## [1] "GE Healthcare/Amersham Biosciences CodeLinkダス UniSet Human 20K I Bioarray"
## [2] "GE Healthcare/Amersham Biosciences CodeLinkダス ADME Rat 16-Assay Bioarray"
#改正确即可
#pkg_all$title[54:55]  <- stringi::stri_enc_toascii(pkg_all$title[54:55] )
#明显的乱码而且只有两个,直接手动改吧
pkg_all$title[54:55]  <- 
c("GE Healthcare/Amersham Biosciences CodeLink UniSet Human 20K I Bioarray", 
  "GE Healthcare/Amersham Biosciences CodeLink ADME Rat 16-Assay Bioarray"
)

顺便去掉了三个甲基化芯片的R包,说来话长,总之因为不需要他们,所以就去掉了

代码语言:javascript
代码运行次数:0
运行
复制
pkg_all = pkg_all[-78,]
pkg_all = pkg_all[-74,]
pkg_all = pkg_all[!pkg_all$gpl=="GPL15380",]

最后把包里的数据文件覆盖掉即可

代码语言:javascript
代码运行次数:0
运行
复制
usethis::use_data(pkg_all,overwrite = T)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档