R 由于名称原因,创建TIBLE返回错误

R 由于名称原因,创建TIBLE返回错误,r,tibble,R,Tibble,我有两个向量。我试图创建一个包含2个向量的所有组合的TIBLE,错误如下 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因为tibbles是data.frame的扩展,而不是一个精确的替代品,所以您可以执行以下操作: tibble(a

我有两个向量。我试图创建一个包含2个向量的所有组合的TIBLE,错误如下

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因为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
tibble(a=1:3,b=a+1)
##一个tibble:3x2
#a b
#   
#1     1     2
#2     2     3
#3     3     4
…您可以在其中引用以前创建的列。你的例子就是一个例子,说明这可能是一个问题

引用手册:

参数是按顺序计算的,因此您可以参考前面的 创建变量。”

资料来源:


因此,在本例中,
rep(G,length(C))
中的
C
实际上引用了您刚刚创建的
tibblename$C
,长度为20,而不是全局环境中的向量
C
,长度为4。

expand.grid(C,G)%>%as.tibble()
?谢谢!我不知道这个函数。但问题不在于我试图实现什么,而在于tibbles的行为。因为tibbles是data.frame的扩展,而不是确切的替代品,所以您可以执行类似于
tibble(a=1:3,b=a+1)
的操作,您可以在其中引用早期创建的列。这类例子正好说明了为什么这可能是个问题。“参数是按顺序计算的,因此您可以引用以前创建的变量。”-tyvm!如果你作为答案发布,我很乐意接受
C
C
都是功能。