gpt4 book ai didi

r - 在 R 包中包含 R 脚本

转载 作者:行者123 更新时间:2023-12-04 10:26:52 28 4
gpt4 key购买 nike

我想将一些软件作为一个包共享,但我的一些脚本似乎并不能很自然地作为函数运行。例如,考虑以下代码块,其中“raw.df”是一个包含离散和连续类型变量的数据框。函数“count.unique”和“squash”将在包中定义。该脚本将数据帧分成两个帧,“cat.df”被视为分类数据,“cts.df”被视为连续数据。

我对如何使用它的想法是,用户将读取数据框“raw.df”,获取脚本,然后交互式编辑“cat.df”和“cts.df”,也许结合一些类别并转换一些变量。

dcutoff <- 9
tail(raw.df)
(nvals <- apply(raw.df, 2, count.unique))
p <- dim(raw.df)[2]
(catvar <- (1:p)[nvals <= dcutoff])
p.cat <- length(catvar)
(ctsvar <- (1:p)[nvals > dcutoff])
p.cts <- length(ctsvar)
cat.df <- raw.df[ ,catvar]
for (i in 1:p.cat) cat.df[ ,i] <- squash(cat.df[ ,i])
head(cat.df)
for(i in 1:p.cat) {
cat(as.vector(table(cat.df[ ,i])), "\n")
}
cts.df <- raw.df[ ,ctsvar]
for(i in 1:p.cts) {
cat( quantile(cts.df[ ,i], probs = seq(0, 1, 0.1)), "\n")
}

现在这当然可以变成一个函数,返回一个包含 nvals、p、p.cat、cat.df 等的列表;然而,这对我来说似乎相当难看。然而,在包中包含脚本的唯一规定似乎是“演示”文件夹,这似乎不是正确的方法。我们将不胜感激地收到有关如何进行的建议。

(但不会正式表达感谢,因为似乎不推荐使用评论来表达感谢。)

最佳答案

最好将代码封装在一个函数中。返回列表并不难看,例如 S3 对象只是一个 列表 属性类 .

object <- list(attribute.name = something, ..)
class(object) <- "cname"
return (object)

您也可以使用 inst文件夹(如 Dirk 评论中所述),因为 inst 的内容子目录将递归复制到安装目录。
  • 您创建一个 inst 文件夹:
    inst
    ----scripts
    some_scripts.R
  • 您可以从包中的函数调用它并使用 system.file机制来加载它。
    load_myscript <- function(){
    source(system.file(package='your_pkg_name','scripts/some_scripts.R'))
    }
  • 您将其称为包中的任何其他函数:
    load_myscript()
  • 关于r - 在 R 包中包含 R 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112432/

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