最近cran真是折腾,tinyarray有好多细枝末节的问题要处理。这次的问题如下👇
只能继续改了,首先是豆豆的笔记(对啊就是豆豆花花的豆豆,由于读博加带娃事务繁忙,他失踪已久,让我们投个票,👇)
如何解决R包检查中出现的non-ASCII characters问题 豆豆说检查哪个数据是非ascii码,结果我发现全部是true
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/
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()
加了上面这句代码然后我就得到了写好的命令,就不用复制粘贴了,爽!
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有问题
> 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的问题
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行的问题
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包,说来话长,总之因为不需要他们,所以就去掉了
pkg_all = pkg_all[-78,]
pkg_all = pkg_all[-74,]
pkg_all = pkg_all[!pkg_all$gpl=="GPL15380",]
最后把包里的数据文件覆盖掉即可
usethis::use_data(pkg_all,overwrite = T)