gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:00:49 25 4
gpt4 key购买 nike

我想我在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com