小编Jer*_*oen的帖子

在R会话中设置--args的值

我想使用该evaluate软件包模拟执行(大量)r脚本,同时使用evaluate记录输出.Evaluate旨在完成这项工作,它几乎可以开箱即用.但是,当使用Rscript时,用户通过命令行传递参数,这些参数--args在R中使用base::commandArgs函数检索.

有没有明智的方法可以覆盖--args正在运行的R会话中的值,以便使用R脚本base::commandArgs()可以按预期工作而无需修改脚本本身?

r evaluate rscript cran

4
推荐指数
2
解决办法
437
查看次数

将嵌套列表展平为1深列表

我正在寻找一种有效的解决方案(递归地)将嵌套列表(任意深度)展平为非嵌套的1深度列表.列表元素不是同类的,因此它们不应该被列入向量中(将所有值强制转换为单个类型).目前为止最好的解决方案是:

flatlist <- function(mylist){
    lapply(rapply(mylist, enquote, how="unlist"), eval)
}
Run Code Online (Sandbox Code Playgroud)

这几乎符合我的要求:

> flatlist(list(foo=TRUE, bar=456, pets=list(cat="meeuw", dog="woof")))
$foo
[1] TRUE

$bar
[1] 456

$pets.cat
[1] "meeuw"

$pets.dog
[1] "woof"
Run Code Online (Sandbox Code Playgroud)

但是,问题在于rapply丢弃NULL值,这是不希望的:

> flatlist(list(foo=123, bar=NULL))
$foo
[1] 123
Run Code Online (Sandbox Code Playgroud)

我想这些NULL元素出现在输出中,无论是作为NULL还是作为NA.还有双循环,enquote然后eval使事情有点慢.此函数在我的代码中广泛使用.有没有办法在一次运行中完成所有操作?

r

4
推荐指数
1
解决办法
1525
查看次数

在Linux中查找静态系统库的路径

我编译的程序,对OpenSSL的静态库链接libssl.alibcrypto.a其附带libssl-dev的是Debian / Ubuntu Linux系统。但是,这些文件的实际位置取决于当前的体系结构和分发。

我可以在Makefile中使用某种方法或环境变量来为链接器提供带有静态库的系统目录的正确路径吗?目前,我正在使用:

-L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/i686-linux-gnu/ -lssl -lcrypto
Run Code Online (Sandbox Code Playgroud)

但是,如果这些目录不存在,并且可能仍然无法正常工作,则会给出一系列警告。

linux ubuntu gcc openssl ld

4
推荐指数
1
解决办法
5826
查看次数

如何使用 OpenSSL 验证 GPG 签名

我编写了一个简单的跨平台实用程序来使用gpgme验证 GPG 签名。然而,gpgme 在 Windows 和其他平台(例如 osx)上工作得不太好,它需要安装 GnuPG 命令行实用程序,这是一个相当重的依赖项。我还研究了其他 openpgp 库,例如netgpg,但它们的可移植性更差(它确实必须使用 mingw-w64 构建)。

是否可以实现一个独立的工具来仅使用 openssl 和 zlib 等标准库来验证 GPG 签名?据我了解,openpgp 由标准密码和哈希函数组成。是什么让这件事变得如此困难以至于没有好的 C 库来做到这一点?

ssl gnupg openpgp public-key-encryption gpgme

4
推荐指数
1
解决办法
2974
查看次数

将debuild/dpkg设置为始终忽略.git目录

为了分发我的Ubuntu包,我用debuild -S它创建源包,然后将其上传到启动板,启动板创建二进制包.这很方便.但是,我注意到我的源包的大小正在快速增长,因为我的所有包都包含一个.git包含在所有源包中的目录.

设置全局选项的方法是什么,以便debuild/dpkg .git在创建源包时始终跳过任何目录?

git ubuntu debian packaging dpkg

3
推荐指数
1
解决办法
1666
查看次数

参考类字段消失

我决定给参考课另一个镜头,但我的第一个问候世界已经给了我一些问题.这里出了什么问题?

> memory <- setRefClass(
+   Class = "memory",
+   fields = list(state="vector"),
+   methods = list(
+     get = function() { return(state) },
+     set = function(x) { state <<- x }
+   )
+ )$new()

> memory$set(123)

> print(memory)
Reference class object of class "memory"
Field "state":
[1] 123

> memory$get()
[1] 123

> print(memory)
Reference class object of class "memory"
Field "state":
Error in methods::show(field(fi)) : 
  error in evaluating the argument 'object' in selecting a method for …
Run Code Online (Sandbox Code Playgroud)

r cran reference-class

3
推荐指数
1
解决办法
199
查看次数

R 中测试文件是否为 ascii 的本机方法

R 中是否有本地方法来测试磁盘上的文件是 ASCII 文本文件还是二进制文件?类似于fileLinux中的命令,但是可以跨平台工作的方法吗?

file.info()函数可以区分文件和目录,但似乎并没有超出这一范围。

r cran

3
推荐指数
1
解决办法
709
查看次数

原始向量的等价物

是否有一个等同substringraw在载体R

假设我有一个大的二进制原始向量x,例如使用读取文件的结果readBin.现在我常常grepRaw在原始向量中找到我想要访问的一些片段的索引.玩具示例:

x <- charToRaw("foobar");
n <- 2;
m <- 5;
Run Code Online (Sandbox Code Playgroud)

现在我想从位置2和5中提取"子串".本地方法是:

x[n:m]
Run Code Online (Sandbox Code Playgroud)

然而,这对于大片段来说很难缩放,因为R首先创建一个大向量n:m,然后迭代这个向量以x逐个从这些索引中提取元素.是否有更原生的方法来提取raw矢量的一部分,类似于substr字符矢量?我不认为我可以使用,rawToChar因为文件可能包含非文本二进制数据.

r cran

3
推荐指数
1
解决办法
244
查看次数

如何区分包命名空间环境与其他环境对象

有没有办法以编程方式区分包环境和非包环境对象?例如,对象x及其y下面都是环境,具有相同的类和属性.

x <- as.environment(cars)
y <- getNamespace("graphics")
Run Code Online (Sandbox Code Playgroud)

但从print方法来看,存在差异:

> print(x)
<environment: 0x1d38118>
> print(y)
<environment: namespace:graphics>
Run Code Online (Sandbox Code Playgroud)

现在假设我有一个任意对象,我怎样才能确定它是哪一个(不看输出print)?我想知道这个,以确定如何将对象存储在磁盘上.在前者的情况下,我需要存储环境的列表表示(可能还有它的父项),但对于后者,我只会存储包的名称和版本.

r cran

3
推荐指数
1
解决办法
368
查看次数

在 stop() 中忽略的附加参数

我想在我的包中调用表单时更改call.参数的默认值stop()。因此,这些包包含一个(非导出)版本,stop该版本使用另一个默认值:

stop <- function(..., call. = FALSE, domain = NULL){
  base::stop(..., call. = call., domain = domain);
}
Run Code Online (Sandbox Code Playgroud)

这符合我的意图stop("my error")。但是,当stop使用条件对象调用时,它会给出一个额外的警告:

> stop(simpleError("foo"))
Error: foo
In addition: Warning message:
 In base::stop(..., call. = call., domain = domain) :
 additional arguments ignored in stop()
Run Code Online (Sandbox Code Playgroud)

错误由 r-base 在stop.R引发。除了参数的不同默认值之外,我如何编写一个stop与 完全相同base::stopcall.函数?

r cran

3
推荐指数
1
解决办法
420
查看次数