由于名称而创建 tibble returns 错误
Creating tibble returns error due to name
我有 2 个向量。我正在尝试使用 2 个向量的所有组合创建一个 tibble,但出现以下错误。
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) 从 tibble 中获取 'C' 值。
这是预期的行为吗?
如果可以,有人可以解释这在实践中有何用处吗? (即有人会如何在他们的代码中利用这一点)
因为 tibbles 是 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
...您可以在其中引用之前创建的列。你的例子说明了这可能是个问题。
引用说明书:
"Arguments are evaluated sequentially, so you can refer to previously
created variables."
来源:http://tibble.tidyverse.org/reference/tibble.html
所以在这种情况下,rep(G, length(C))
中的C
实际上引用了你刚刚创建的tibblename$C
,它的长度为20,而不是C
中的向量全局环境,长度为 4.
我有 2 个向量。我正在尝试使用 2 个向量的所有组合创建一个 tibble,但出现以下错误。
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) 从 tibble 中获取 'C' 值。 这是预期的行为吗? 如果可以,有人可以解释这在实践中有何用处吗? (即有人会如何在他们的代码中利用这一点)
因为 tibbles 是 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
...您可以在其中引用之前创建的列。你的例子说明了这可能是个问题。
引用说明书:
"Arguments are evaluated sequentially, so you can refer to previously created variables."
来源:http://tibble.tidyverse.org/reference/tibble.html
所以在这种情况下,rep(G, length(C))
中的C
实际上引用了你刚刚创建的tibblename$C
,它的长度为20,而不是C
中的向量全局环境,长度为 4.