R(统计)范围错误使用 transformBy(),doBy 包的一部分

标签 r statistics

我想我在使用 transformBy() 时遇到了范围界定错误,transformBy() 是 R 的 doBy 包的一部分。这是一个简单的问题示例:

> library(doBy)
>
> test.data = data.frame(
+  herp = c(1,2,3,4,5),
+  derp = c(2,3,1,3,5)
+ )
>
> transformData = function(data){
+ 
+  five = 5
+ 
+  transformBy(
+   ~ herp,
+   data=data,
+   sum=herp + derp + five
+  )
+ }
>
> transformData(test.data)
Error in eval(expr, envir, enclos) : object 'five' not found

当我在子作用域(非全局作用域)内运行 transformBy() 时,似乎没有局部变量或函数可用于 transformBy。另一方面,如果我全局定义这些变量或函数,它们就可用了。这是一个稍微修改过的有效示例:

> library(doBy)
>
> test.data = data.frame(
+  herp = c(1,2,3,4,5),
+  derp = c(2,3,1,3,5)
+ )
>
> five = 5
>
> transformData = function(data){
+  transformBy(
+   ~ herp,
+   data=data,
+   sum=herp + derp + five
+  )
+ }
>
> transformData(test.data)
  herp derp sum
1    1    2   8
2    2    3  10
3    3    1   9
4    4    3  12
5    5    5  15

我是不是误解了 transformBy 应该如何工作或者是什么东西坏了?

版本:

  • Ubuntu:8.04 (x64)
  • R: 2.10.1
  • doBy:4.0.5

最佳答案

这在 ?transformBy 帮助页面中有明确记录,因此 不是错误。

详细信息:

 The ... arguments are tagged vector expressions, which are
 evaluated in the data frame data. The tags are matched against
 names(data), and for those that match, the value replace the
 corresponding variable in data, and the others are appended to
 data.

简单地使对象“五”成为data.frame“数据”的一部分,并且 它会按你预期的那样工作。目前该功能正在尝试 评估“数据”data.frame 中的“五”,这当然会失败。

关于R(统计)范围错误使用 transformBy(),doBy 包的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3742415/

相关文章:

r - 如何使用开始日期在 R 中创建滞后的结束日期?

r - 打印两个字符对象中的公共(public)对象

r - 为什么使用 quantmod 获取开盘交易价格会出现延迟

R:当 row.values 和 column.values 的范围很小时,Levelplot 会给出多余的空白

linux - 基于 Web 的 Linux 统计信息

r - R 中的 scipy.linalg.cho_solve 对应物?

r - 基于列表对象的子数据框

python - 寻找时间序列数据中的重复模式

audio - 如何计算 ffmpeg astats 波峰因数

python - 了解sklearn GridSearchCV的best_score_和best_estimator_