2017-08-28 28 views
1

我从data.tree例子无法使data.tree正常工作?

> data(acme) 
> acme$Do(function(node) node$expectedCost <- node$p * node$cost) 
> print(acme, "expectedCost") 

尝试下面的代码,但我得到了下面的警告(转换为错误)。你能帮帮这里..

Error in `[<-.data.frame`(`*tmp*`, colName, value = list(`Acme Inc.` = numeric(0), : 
(converted from warning) provided 11 variables to replace 1 variables 

3: ToDataFrameTree(x, format = TRUE, ...) 
2: print.Node(acme, "expectedCost") 
1: print(acme, "expectedCost") 
+0

这是由依赖项中的更改引入的错误。但我解决了它,你的例子应该再次使用CRAN 0.7.3上的最新data.tree版本工作。 –

+0

感谢Chris解决了这个问题。作为data.tree的新手,意图不在于提出一个修辞问题,而是为了实现这个目标。 – rlpatrao

回答

0

你穿越了所有的节点,包括根节点,那里没有成本。根据data.tree文档:

成本,仅适用于叶节点。项目成本。

因此,乘法不起作用。谢天谢地,filterFun参数允许您指定仅将函数应用于叶节点,如下所示。

acme$Do(function(node) node$expectedCost <- node$p * node$cost, filterFun = isLeaf) 

现在,您将能够成功地打印expectedCost。

另请注意,根节点没有“p”的值。

+0

@ripatrao上面给出的示例正是在函数Do下的包pdf中给出的示例。他们为什么会给出一个产生错误的示例? – Onyambu

+0

@Onyambu:他们不会故意这样做。但他们更喜欢github中的一个bug报告来提出一个反问的问题;) –