Я думаю, что при использовании transformBy(), части пакета doBy для R. я получаю ошибку определения области охвата. Вот простой пример проблемы:
> 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