gpt4 book ai didi

r - 如何生成与 devtools::install-version 兼容的 Meta/archive.rds?

转载 作者:行者123 更新时间:2023-12-04 09:23:29 25 4
gpt4 key购买 nike

我正在尝试管理 CRAN 存储库以供内部使用。

在 devtools::install-version 中,它指的是 Meta/archive.rds 。那是怎么产生的?

我知道 writePackages 用于为源代码或 Mac/Windows 二进制包的存储库生成“PACKAGES”和“PACKAGES.gz”文件。

是否有类似的功能可以根据存档文件夹中的包生成 Meta/archive.rds

最佳答案

我们最终实现的解决方案是在本地下载文件,然后手动操作,上传到我们的个人 CRAN 实例。

archive <- readRDS('archive.rds')
archive <- create_metadata_for_package(archive, "package_name", "package_name/package_name_0.9.2.tar.gz", "user")
saveRDS(archive, 'archive.rds')

create_metadata_for_package <- function(archive, package_name, package_path, uname) {

package_to_add <- structure(
list(
size = c(1680436)
, isdir = c(FALSE)
, mode = structure(c(436L), class = "octmode")
, mtime = Sys.time()
, ctime = Sys.time()
, atime = Sys.time()
, uid = c(1001L)
, gid = c(1001L)
, uname = c(uname)
, grname = c("cranadmin")
)
, .Names = c("size", "isdir", "mode", "mtime", "ctime", "atime", "uid", "gid", "uname", "grname")
, row.names = c(package_path)
, class = "data.frame"
)

#check if package_name exists in archive
new_package_name <- is.null(archive[[package_name]])

if(new_package_name) { # new package_name
new_package_meta_data <- data.frame(size=double()
, isdir=logical()
, mode=double()
, mtime=as.Date(character())
, ctime=as.Date(character())
, atime=as.Date(character())
, uid=double()
, gid=double()
, uname=character()
, grname=character())
archive[[package_name]] <- new_package_meta_data
} else { # existing package_name
package_metadata <- archive[[package_name]]
package_versions <- rownames(package_metadata)

#check if package_path is duplicate in existing metadata
if(package_path %in% rownames(archive[[package_name]])) {
return
}
}

# append package_to_add to metadata
archive[[package_name]] <- rbind(archive[[package_name]], package_to_add)

archive
}

关于r - 如何生成与 devtools::install-version 兼容的 Meta/archive.rds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com