` in R, "error : attempt to apply non-function"

` in R, "error : attempt to apply non-function"

下面我分享了一段代码,在尝试在我使用 R 软件的 data.tree 包创建的树中添加子节点后,我遇到了错误。错误显示“尝试应用非功能”,我不知道是我提供的数据类型有问题还是语法有问题。

> g <- Node$new("T")
> s <- g$AddChild("S")
> n <- g$AddChild("N")
> t <- n$AddChild("T")
> e <- n$AddChild("E")
> u <- e$AddChild("U")
> d <- e$AddChild("D")
> print(g)
      levelName
1 T            
2  ¦--S        
3  °--N        
4      ¦--T    
5      °--E    
6          ¦--U
7          °--D
> g$s$AddChild("F")
Error: attempt to apply non-function

您的错误是因为 g 没有名为 s 的成员。它有一个名为 children 的成员,它本身有一个名为 S 的成员(请注意大写字母,因为您使用大写字母“S”作为节点名称)。

您可以通过以下两种方式之一访问此节点:使用 s,因为这是您存储为对此节点的引用的全局环境中的变量,或者使用 g$children$S],这也是对同一节点的直接引用。

如果您确实需要在全局环境中分别引用所有这些节点,您可以按照示例中的方式进行操作,在这种情况下,您的最后一行将是:

s$AddChild("F")

print(g)
#>       levelName
#> 1 T            
#> 2  ¦--S        
#> 3  ¦   °--F    
#> 4  °--N        
#> 5      ¦--T    
#> 6      °--E    
#> 7          ¦--U
#> 8          °--D

但您可能希望从 g 开始明确工作,以避免跟踪所有这些额外变量,如以下完整表示:

library(data.tree)

g <- Node$new("T")
g$AddChild("S")
g$AddChild("N")
g$children$N$AddChild("T")
g$children$N$AddChild("E")
g$children$N$children$E$AddChild("U")
g$children$N$children$E$AddChild("D")

print(g)
#>       levelName
#> 1 T            
#> 2  ¦--S        
#> 3  °--N        
#> 4      ¦--T    
#> 5      °--E    
#> 6          ¦--U
#> 7          °--D

g$children$S$AddChild("F")

print(g)
#>       levelName
#> 1 T            
#> 2  ¦--S        
#> 3  ¦   °--F    
#> 4  °--N        
#> 5      ¦--T    
#> 6      °--E    
#> 7          ¦--U
#> 8          °--D

reprex package (v0.3.0)

于 2020-12-05 创建