由于名称的原因,创建小标题会返回错误

时间:2018-10-10 03:18:29

标签: r tibble

我有2个向量。我正在尝试用两个向量的所有组合创建一个小标题,并出现以下错误。

C <- c(1,2,3,4)
G <- c(1,2,3,4,5)
tibble('C' = rep(C, each = length(G)), 'G' = rep(G, length(C)))
Error: Column `C` must be length 1 or 100, not 20

例如,当我将列“ C”重命名为列“ A”时,错误消失了。 我们也无法通过data.frame得到相同的错误

我怀疑length(C)从小节中取'C'值。 这是预期的行为吗? 如果可以的话,有人可以解释一下这在实践中如何有用吗? (即,有人将如何在其代码中利用这一点)

1 个答案:

答案 0 :(得分:0)

由于小标题是data.frame的扩展,而不是确切的替代,因此您可以执行以下操作:

tibble(a=1:3, b=a+1)
## A tibble: 3 x 2
#      a     b
#  <int> <dbl>
#1     1     2
#2     2     3
#3     3     4

...您可以在其中引用先前创建的列。您的示例是何时可能会出现问题的实例。

引用手册:

  

“参数是按顺序求值的,因此您可以以前参考   创建的变量。”

来源:http://tibble.tidyverse.org/reference/tibble.html

因此,在这种情况下,C中的rep(G, length(C))实际上是指您刚创建的tibblename$C,长度为20,而不是全局变量中的向量C环境,长度为4。