R - 包装器似乎不适用于向量



以下工作c()但失败,qc()

这有效:

library(wrapr)
library(data.table)

dtest <- data.table(x=1:10,y=letters[1:10])
for (i in 1:nrow(dtest)){
print(paste(i,c(dtest[i,2])))
}
#> [1] "1 a"
#> [1] "2 b"
#> [1] "3 c"
#> [1] "4 d"
#> [1] "5 e"
#> [1] "6 f"
#> [1] "7 g"
#> [1] "8 h"
#> [1] "9 i"
#> [1] "10 j"

现在,如果您将c替换为qc,则不起作用。

library(wrapr)
library(data.table)
#> 
#> Attaching package: 'data.table'
#> The following object is masked from 'package:wrapr':
#> 
#>     :=
dtest <- data.table(x=1:10,y=letters[1:10])
for (i in 1:nrow(dtest)){
print(paste(i,qc(dtest[i,2])))
}
#> Error in eval(ei): object 'dtest' not found

抱歉,原来是包装器代码中的名称冲突。我已经在包装器的开发版本中记录并修复了它(可在此处获得(。

感谢您报告此事,并对麻烦表示歉意。

此外,固定版本只会捕获源代码,而不是计算表达式。我添加了一些文档来强调 qc(( 是"引用 c((",它具有不同的(更激进的(引用行为 - 不仅将参数值转换为字符串(而是将名称捕获为字符串(。

library(wrapr)
library(data.table)
dtest <- data.table(x=1:10,y=letters[1:10])
for (i in 1:nrow(dtest)){
print(paste(i,qc(dtest[i,2])))
}
# [1] "1 dtest[i, 2]"
# [1] "2 dtest[i, 2]"
# [1] "3 dtest[i, 2]"
# [1] "4 dtest[i, 2]"
# [1] "5 dtest[i, 2]"
# [1] "6 dtest[i, 2]"
# [1] "7 dtest[i, 2]"
# [1] "8 dtest[i, 2]"
# [1] "9 dtest[i, 2]"
# [1] "10 dtest[i, 2]"

最新更新