首页 > 解决方案 > 使用 expand.grid/crossing() 查找单个值和向量的组合,而不用元素分隔向量?

问题描述

我正在尝试使用 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

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

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

标签: rdataframevectortibble

解决方案


推荐阅读