我正在尝试使用data.tree examples
中的以下代码> 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 :(得分:0)
您正在遍历所有节点,包括根节点,其中没有成本。根据data.tree文档:
成本,仅适用于叶节点。项目成本。
因此,乘法将不起作用。值得庆幸的是,filterFun参数允许您指定将函数仅应用于叶节点,如下所示。
acme$Do( function( node ) node$expectedCost <- node$p * node$cost, filterFun = isLeaf )
您现在可以成功打印expectedCost。
另请注意,根节点没有“p”的值。