nchar(替代(a + b + c))实际上是多少?

Man*_*l R 3 r

我一直在玩弄,substitute并不能完全弄清楚nchar(substitute(a + b + c))实际的结果是什么?结果是

nchar(substitute(a + b + c))
[1] 1 5 1
Run Code Online (Sandbox Code Playgroud)

究竟究竟是什么?我认为中期只是该表达式的元素数量.但是下面的内容是什么呢?其他1代表什么呢?

nchar(substitute(a + b))
[1] 1 1 1
Run Code Online (Sandbox Code Playgroud)

akr*_*run 6

我们可以检查转换为 character

v1 <- as.character(substitute(a + b + c))
v1 
#[1] "+"     "a + b" "c"    

nchar(v1)
#[1] 1 5 1
Run Code Online (Sandbox Code Playgroud)

还要计算给出字符数的空间.

as.character(substitute(a + b))
#[1] "+" "a" "b"
Run Code Online (Sandbox Code Playgroud)

是每个元素的一个字符长度.

  • 这是因为`+`是一个从左到右的运算符.所以`a + b + c`相当于`"+"(a + b,c)`. (3认同)
  • @ManuelS当你有两个术语时,它是"+","a","b"`但是超过2个术语,第二个术语应该有剩余的`+`.你可以检查`as.character(替换(a + b + c + d))`我不知道为什么它会像那样分裂的确切原因. (2认同)