r - 使用 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 在组合命令中拆分我的向量?
解决方案
推荐阅读
- google-apps-script - 数据不会正确发布
- java - 如何使用中间证书创建 PKCS12 文件?
- sql-server - 当我检查 SentryIO 时,'CAST' 附近的语法不正确,预期为 'AS'
- java - 来自 Kafka 的消息未发送到 Clickhouse
- oracle - 使用 IDE 工具(如 SQL Developer 或 Toad)的 Oracle 并行查询行为
- django - Django中状态管理的最佳实践
- c++ - 如何使用 nvcc 将共享库 (.so) 链接到 CUDA 源文件 (.cu)?
- javascript - 将更改的参数从挂钩传递到 setInterval()
- listview - Xamarin:标签在 ListView 中消失
- swift - 在 Swift 中减少 Result 数组