【发布时间】:2015-09-13 17:00:28
【问题描述】:
我很抱歉在我的第一篇文章中没有提供足够的细节......
我现在展示的实际上就是我用来弄清楚
与data.tree合作。
我正在尝试在树结构中组织数值模拟的输出,以供以后与 R 中的 data.tree 包一起使用。我的树的初始(预定义)结构是(无法将前两行放入灰色框):
require("data.tree")
mcdata <- Node$new("SNS")
FTS <- mcdata$AddChild("First Target Station")
BL1A <- FTS$AddChild("Beamline 1A")
BL1B <- FTS$AddChild("Beamline 1B")
BL1C <- FTS$AddChild("Beamline 1C")
BL2 <- FTS$AddChild("Beamline 2")
BL3 <- FTS$AddChild("Beamline 3")
BL10 <- FTS$AddChild("Beamline 10")
BL11A <- FTS$AddChild("Beamline 11A")
BL11B <- FTS$AddChild("Beamline 11B")
BL12 <- FTS$AddChild("Beamline 12")
STS <- mcdata$AddChild("Second Target Station")
BL1 <- STS$AddChild("Beamline 1")
BL2 <- STS$AddChild("Beamline 2")
BL3 <- STS$AddChild("Beamline 3")
BL4 <- STS$AddChild("Beamline 4")
BL5 <- STS$AddChild("Beamline 5")
处理模拟输出文件会产生类似的结果
result <- c("First Target Station", "Beamline 11A", "RAPID", ...)
'result' 可能会变得更长,但是一旦我有一种合适的方式将“RAPID”添加为孩子,我认为以后添加任何孩子和/或属性应该很容易。 要决定是否需要添加一个名为“RAPID”的孩子,我执行以下操作 (知道“第一目标站”和“Beamline 11A”分支存在)。
path <- mcdata$"First Target Station"$"Beamline 11A"$"RAPID"
如果长度(路径)为 0,我必须添加名为“RAPID”的孩子,否则我不必这样做。
这是直截了当的,但对于实际目的并不是很有用。我想我想要的是一种直接用结果中的元素构建“路径”的方法。 然而天真的尝试
path <- mcdata$result[1]$result[2]$result[3]
我尝试过的主题的几个变体都不起作用...
任何如何解决我的小问题的建议将不胜感激......
谢谢,
克里斯
附:正如您可能会说的那样,我是一个新的“海报”,对面向对象的做事方式并不多。如果这不是问我问题的好方法,我提前道歉。
【问题讨论】:
-
什么是 mcdata ?因为您是 SO 的初学者,所以我建议您阅读此线程以在您的问题中包含可重现的代码。stackoverflow.com/questions/5963269/…
-
当然,请添加更多细节。这个stackoverflow.com/questions/31339805/… 可能会有所帮助
-
好吧,data.tree 有自己的小方法。我会在接下来的几个小时内发布答案。感谢您提供详细信息。
-
assign('newPath', oldPath$AddChild(parsedFile[.]))$path
-
我要补充一点,我尝试使用 'assign' 语句...感谢您考虑一下!
标签: r