【发布时间】:2010-09-18 16:16:25
【问题描述】:
我认为我在使用 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
- 执行:4.0.5
【问题讨论】:
-
我不确定你到底想在这里做什么,但如果你只想添加列:test.data
-
@Brandon :见 ?transformBy。您的代码不等同于 OPs 问题
标签: r statistics