【发布时间】:2018-08-03 17:15:02
【问题描述】:
我创建了这些向量:
Letters <- c("A","C","E","G","H","J","K")
Numbers <- c(0,1,2,3,4,6,7,9)
AlphaNumeric <- c(Letters, Numbers)
我想使用上面提到的所有元素在以下三个条件下接收所有 3 元素组合(例如 AA1、G26 等)的数据框:
1.) 第一个元素是一个字母
2.) 第二个元素是一个数字或与第一个元素相同的字母
3.) 第三个元素是一个数字
方法:
我尝试使用expand.grid() 并成功地获得了包含 3 个元素的所有组合。然后我尝试了expand.grid(x = Letters, y = AlphaNumeric, z = Numbers) 并设法实现了 1.) 和 3.) 但到目前为止未能管理 2.)。
不满意的解决方案: 我已经想出了一个用for循环来做这件事的方法,但我想除了:
LNN <- expand.grid(x = Letters, y = Numbers, z = Numbers)
for ( Element in Letters) {
currentLLN <- expand.grid(x = Element, y = Element, z = Numbers)
LNN <- merge(LNN, currentLLN, all = TRUE)}
任何帮助将不胜感激,谢谢你,克里斯蒂安
【问题讨论】:
-
我认为@Florian 的答案简单而优雅,绝对是您应该使用的,但我发表评论是因为我还想提及正则表达式。你对他们熟悉吗?它们是一种用于处理和搜索字符串模式的工具,如果您曾经处理过类似的问题,但发现无法详尽地生成您感兴趣的每个模式,它们可能会派上用场。
-
@HarlandMason:谢谢您的评论,我对它们不熟悉,不(有一段时间没有使用 R,只是刚刚开始使用它)。但我会看看他们,非常感谢!