我正在尝试使用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在组合命令中分割向量?