wrapr似乎不适用于矢量

时间:2018-05-20 07:49:17

标签: r data.table

以下内容适用于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

1 个答案:

答案 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]"