【发布时间】:2021-11-01 03:30:30
【问题描述】:
几周前,我问了一个关于如何根据已知标准从矩阵中提取某些行的问题 (How to extract rows with similar names into a submatrix?)。收到的答案当时对应用程序非常有效,但我发现自己需要动态采样行名称并构建后续矩阵的功能,而无需明确确定要提取哪个名称。
例如,我在上一个问题中构建的模型有 6 行“族”:Intercept、actsBreaks、tBreaks 等,它们可以替换为 15 多个其他潜在的预测变量。手动更改行构造部分很麻烦,我需要避免。
我弄乱了readline(prompt=...) 让用户定义他们希望使用的预测变量系列,但被告知这是一个用户需要能够在一夜之间循环并离开的程序,所以那里没有运气。是否可以修改此代码
uniBreakLines1 <- grep("actsBreaks[0-9]*", rows)
actsBreaks <- matrix1[uniBreakLines1,drop = FALSE]
从矩阵行名称向量中采样而不确切指定使用哪个“系列”?还是我应该使用其他东西? Caret 包看起来很有前途,但我并不精通 r 语法,而且我不确定使用声称主要用于机器学习的东西是否具有此功能。这个问题 (Subsetting a matrix by row.names) 中使用矩阵索引的答案可能有潜力,但是我们不得不再次手动更改子矩阵代码。
TlDr:我需要一种方法来按名称从矩阵中过滤行,而无需输入
uniBreakLines1 <- grep("actsBreaks[0-9]*", rows)
actsBreaks <- matrix1[uniBreakLines1,drop = FALSE]
【问题讨论】:
-
我的回答在这里有效吗stackoverflow.com/questions/68821483/…> ?
-
@TarJae 是的,但它仍然有
df1 <- df %>% filter(!str_detect(rownames(df), "unitBreaks"))的显式行名调用
标签: r r-caret flexibility