0

我写了一个 R 包,其中函数的名称是土耳其语。我想把那个包裹带到 CRAN 并内化。我将所有土耳其语名称(函数、数据集)更改为英语,以便每个人都可以轻松使用该包。之后,我按照常规的“library(roxygen2); library(devtools); library(digest); roxygenize("causfinder"); build("causfinder"); install("causfinder"); library(causfinder)” 方式进入过程。

最后,这次所有函数都以英文名称出现在 Revolution R 的对象浏览器(7.1.0 版学术许可证)中。因此,对于函数名称的转换,一切正常。

问题:

但是,有趣的是,并非包中所有数据文件的名称都没有转换为英文。

到目前为止我为解决问题所做的工作:

我尝试了所有我知道的技巧:

1.我从库位置(我只有 1 个这样的位置:“C:\Revolution\R-Enterprise-7.1\R-3.0.2\library”)完全删除了包并重建包并再次安装。

2.我从工作目录“C:\Users\erdogan\Documents\Revolution”中删除了包,并触发了“library(roxygen2); library(devtools); library(digest); roxygenize("causfinder"); build("causfinder "); install("causfinder"); library(causfinder)" 进程

3.通过提供缓冲效果的可能性,我删除了“C:\Users\erdogan\Documents\Revolution\32_7.1”,这样该文件夹中的“PackageXMLs\causfinder.xml”就不会被不当干预。我通过重新启动 Revo R 创建了“32_7.1”文件夹。

4.我在这里应用了“Dirk Eddelbuettel”建议的技巧: Update the dataset in an installed package

“更新源并使用新的独特版本号重新安装”:无效。“可能通过强行覆盖它。不是正确的方法。”:如何施加这种力量?

我的发现可能会给专业人士提供解决问题的想法:

只有一个数据文件被正确重命名,并且在对象浏览器中该数据文件的末尾出现“[Package causfinder version 1.0 Index]”。所有其他数据文件的名称仍然是土耳其语,并且在这些数据文件的末尾,没有出现“[Package causfinder version 1.0 Index]”这句话!我没有对正确完成内化的数据文件做任何特殊的事情。

任何帮助将不胜感激。

4

1 回答 1

0

逐步解决方案:32 位Windows 的笔记本电脑;GUI:Revolution R Enterprise(32 位))

1.通过清理相关文件夹准备环境:
1a。通过 Windows 资源管理器删除 R 库位置中的包文件夹:(
我只有 1 个这样的位置:我删除了“C:\Revolution\R-Enterprise-7.1\R-3.0.2\library\causfinder”文件夹)
(运行“. libPaths()" 查看 R 的库位置并从所有 R 的库位置中删除包的文件夹)

1b。通过 Windows 资源管理器删除 R 工作目录中的包文件夹:(
我只有 1 个这样的位置:我删除了“C:\Users\erdogan\Documents\Revolution\causfinder”文件夹)
(运行“getwd()”查看 R 的工作目录并从所有 R 的工作目录中删除包的文件夹)

1c。通过 Windows 资源管理器从 R 的工作目录中删除“32_7.1”或“64_7.1”文件夹(32 位、64 位 R,无论您使用哪个):
此文件夹中讨论的包的 .xml 文件有时可能会介入和影响 R 命令的结果,并给出意想不到的结果。
删除“PackageXMLs\causfinder.xml”所在的“C:\Users\erdogan\Documents\Revolution\32_7.1”文件夹。
(Revolution R 重新启动时,如果 32_7.1(或 64_7.1)文件夹不存在,则会自动创建)

现在重新启动革命 R。

2.通过 R 创建 .rda 和 .Rd 文件并将它们放在相关位置。
((对于英文版,我创建了 .rda 和 .Rd 文件,如下所示:

V6Stationary43Obs.df <-     
read.csv("C:/Users/erdogan/Documents/Revolution/V6Stationary43ObsWithoutX.csv", header = TRUE, stringsAsFactors = FALSE)
# create V6Stationary43Obs.df.rda dataset file; df to denote data frame
save(V6Stationary43Obs.df, file="V6Stationary43Obs.df.rda")          
prompt(V6Stationary43Obs.df) # creates V6Stationary43Obs.df.Rd help file))

((对于土耳其人,我曾经执行过以下操作

D6Duragan43Gozlem.dvc<- read.csv("C:/Users/erdogan/Documents/Revolution/D6Duragan43GozlemXsiz.csv", header = TRUE, stringsAsFactors = FALSE)
#  create D6Duragan43Gozlem.vc.rda dataset file; df to denote data frame
save(D6Duragan43Gozlem.vc, file="D6Duragan43Gozlem.vc.rda")
prompt(D6Duragan43Gozlem.vc) # create D6Duragan43Gozlem.vc.Rd help file))

3.通过Windows资源管理器将.rda和.Rd文件(在Step2中创建)带到R工作目录中的“data”和“man”文件夹:
V6Stationary43Obs.df.rda数据集文件-> C:\Users\erdogan\ Documents\Revolution\causfinder\data V6Stationary43Obs.df.Rd 帮助文件 --> C:\Users\erdogan\Documents\Revolution\causfinder\man

4.通过R至少填写.Rd文件(在步骤3中创建)的“标题”和“描述”标签:“文件-打开-文件...-V6Stationary43Obs.df.Rd”

\title{
V6Stationary43Obs is..... .
}
\description{
V6Stationary43Obs does..... .
}

5.加氧:

library(roxygen2)
library(devtools)
library(digest)
roxygenize("causfinder")
build("causfinder")
install("causfinder")
library(causfinder)

解决方案:64 位Windows 的笔记本电脑;GUI:Revolution R Enterprise(32 位))

通过以下附加操作执行上述过程:

1.数据集照常创建(例如;“.df”表示数据框):

X.df <- read.csv("C:/Users/erdogan/Documents/Revolution/X.csv", header = TRUE, stringsAsFactors = FALSE)
save(X.df, file="X.df.rda")  # X.df.rda dataset is created
prompt(X.df) #X.df.Rd help file is created.

2.关闭Revolution R,在工作目录中删除文件夹“32_7.3”。我们删除此文件夹的原因是: 我们的包(此处为 causfinder)的信息(函数、数据集等)在 32_7.3 中存储为 .xml 文件。但是,一旦我们一一添加数据集,这个 .xml 文件就无法自行更新。

3.打开Revolution R(重新创建文件夹“32_7.3”)。此时,执行上面的步骤 5(应用 roxygenization)。一旦我们这样做了,数据集就会在 Revolution R 的对象浏览器中可见。

4.无缝实现对一切的控制:进入包库位置的“data”文件夹。在这里,您只能看到“.rdb、.rds、.rdx”文件。

解决方案:64 位Windows 的笔记本电脑;GUI:Revolution R Enterprise(64 位))

应用 32 位的步骤。如果一切正常,那么很好:你完成了。如果不正常(即数据集在 Revo R 的对象浏览器中不可见,并且库位置中包的数据文件夹不只包含 .rdb、.rds、.rdx 文件),请不要惊慌:

您仍然可以使用您创建的数据集,这些数据集在包的库位置中被视为 .rda 文件:使用“data”命令:

data(YourDatasetName, package = causfinder, lib.loc = YourLibraryLocation)

了解更多关于数据命令的信息。使用此命令后,您将对象浏览器中的数据集作为全局环境的对象。

于 2014-10-05T21:00:07.083 回答