以下内容适用于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
答案 0 :(得分:1)
很抱歉,结果是在包装代码中发生了名称冲突。我已经在devpr的开发版本(可用here)中记录并修复了它。
感谢您报告并对此事感到抱歉。
固定版本也只是捕获源代码而不是评估表达式。我添加了一些文档来强调qc()是“quoiting 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]"