` 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 创建
下面我分享了一段代码,在尝试在我使用 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 创建