r - R搜索功能返回开始和结束位置
问题描述
我需要编写一个搜索函数来使用 R 在大型数据集中查找某些元素的开始和结束位置。
我的示例数据集如下所示:
C1 C2 Index
aa J 1
aa J 2
aa J 3
ab O 4
aa O 5
aa J 6
aa J 7
aa J 8
aa J 9
aa K 10
ac K 11
aa J 12
aa J 13
我想编写一个搜索函数,例如search("aa","J")
(其中“aa”是 C1 列的值,“J”是 C2 列的值)。该函数将首先根据“aa”对数据集进行子集化;然后根据这个子集提供索引。
结果将返回在矩阵中找到的所有位置的索引,如下所示:
[,1] [,2]
[1,] 1 3
[2,] 5 8
[3,] 10 11
非常感谢你。
我试图修改提供的代码;但有错误。你能帮忙看看吗?
get_inds <- function(test, C1, C2) {
test <- subset(test, test$C1 == C1)
inds <- rle(test$C1 == C1 & test$C2 == C2)
end = cumsum(inds$lengths)
start = c(1, head(end, -1) + 1)
data.frame(start, end)[inds$values, ]
}
get_inds(test, 'aa', 'J')
解决方案
@markus 提供的链接解决了您的问题,您需要根据您的要求进行修改。
get_inds <- function(test, a, b) {
test <- subset(test, C1 == a)
inds <- rle(test$C1 == a & test$C2 == b)
end = cumsum(inds$lengths)
start = c(1, head(end, -1) + 1)
df = data.frame(start, end)[inds$values, ]
row.names(df) <- NULL
df
}
get_inds(test, 'aa', 'J')
# start end
#1 1 3
#2 5 8
#3 10 11
您需要更改条件rle
并删除不满足条件的行。
推荐阅读
- javascript - 记录时与附加到元素时返回不同值的 HTML 字符串
- c++ - 使用 reinterpret_cast 访问类似“struct {double, int}”的对象的对象
- android - React Native Android 崩溃 - RNKeychainManager.setInternetCredentialsForServer 有 6 个参数,预期为 7
- react-redux - 已启用 Google maps api 地理编码,地点和 javascript 未显示错误,地理编码请求已通过 REQUEST_DENIED 满足
- python - 如何绘制 ohlc 图表?
- amazon-web-services - “JavaServer Faces 2.2 需要动态 Web 模块 2.5 或更高版本。”
- git - AWS Codebuild - 可以从 codebuild buildspec 访问最后一个 git commit 消息吗?
- oop - 哪个设计更好?把这个逻辑放在前端还是后端?
- docker - 如何泊坞窗运行指向同一端口的 API 项目同时具有两个 GitHub 分支
- reactjs - 使用 TinyMCE-react