【发布时间】:2021-03-24 15:20:23
【问题描述】:
让我们考虑向量跟随及其组合矩阵表示:
string_vec <- c("huge", "small", "small_very", "something", "big_huge", "big_very", "tremendous",
"huge_big", "huge_amount", "small_amout", "else", "something_big", "something_small")
combinations <- utils::combn(string_vec, 6)
让我们定义向量
a = c("huge", big")
我现在想将我的矩阵限制为至少包含 a 的元素族中的一个元素。
即我希望至少有一个以huge 开头的元素(所以这些元素是:"huge", "huge_big", "huge_amount")和至少一个以big ("big_huge", "big_very") 开头的元素。
你知道如何获得它吗?
编辑
我发现我们可以使用apply 和startsWith:
combinations <- combinations[,colSums(apply(combinations, 2, function(x) startsWith(x, "huge")))==1]
combinations <- combinations[,colSums(apply(combinations, 2, function(x) startsWith(x, "big")))==1]
但是我发现这个解决方案效率很低,因为我必须为每个家庭手动完成每个步骤(在更长的家庭向量中可能会很成问题)
【问题讨论】:
标签: r arrays string matrix character