使用expand.grid / crossing()查找单个值和向量的组合,而无需通过元素分隔向量?

时间:2018-07-26 18:42:40

标签: r dataframe vector tibble

我正在尝试使用expand.grid创建一个数据框,以找到两个具有数值和两个向量的变量的所有可能组合。但是,我不希望在组合过程中将向量分成单独的元素。

我首先尝试为数据帧设置之外的向量分配名称,然后仅在组合命令中使用名称。但是,这阻止了我从数据框中提取向量的值,因为R现在将其识别为一个因素。

以下是我正在使用的代码的简化版本:

    datamatrix <- matrix( c(1:36), nrow = 6, byrow = TRUE)
    vector1 <- c(1, 2, 3)
    vector2 <- c(4, 5, 6)

    sample_table <- expand.grid(variable1 <- c("a", "b", "c"),
                        variable2 <- c("d", "e", "f"),
                        vector <- c(vector1, vector2))

与向量本身相反,这产生了向量1和向量2的元素的单个值的第三列(1、2、3、4、5、6)。

我的目标如下(##表示所需的输出):

    sample_table[1,3]
    ## vector1

然后,我希望能够将其用作实际向量,而不是作为因子:

    datamatrix[sample_table[1,3],]
    ##     [,1] [,2] [,3] [,4] [,5] [,6]
    [1,]    1    2    3    4    5    6
    [2,]    7    8    9   10   11   12
    [3,]   13   14   15   16   17   18

我还尝试使用crossing()命令代替expand.grid创建数据框架的小版本。但是,这仍然将我的向量拆分为单个元素,而不是保留整个向量。

是否可以使用某种命令或运算符来防止R在组合命令中分割向量?

0 个答案:

没有答案