【发布时间】:2018-03-30 14:08:38
【问题描述】:
我尝试在 R 中进行一些搜索和数据分析。我有这样的代码:
data = matrix(
c(3, 21, 80, 208,
3, 49, 80, 1298,
5, 17, 80, 302,
8, 28, 80, 2857,
13, 08, 80, 2860,
14, 08, 80, 2860,
15, 58, 80, 208,
15, 58, 80, 463,
15, 58, 80, 2065,
15, 58, 80, 2065,
13, 05, 80, 608,
13, 08, 80, 608
),
nrow=12,
ncol=4,
byrow = TRUE)
#find a match with numbers 13 and 8 in column 1
require(AhoCorasickTrie)
keywords = c("13","8 ")
SearchNew = AhoCorasickSearch(keywords,data[,1])
SearchNew 看起来像这样:
> SearchNew
[[1]]
list()
[[2]]
list()
[[3]]
list()
[[4]]
list()
[[5]]
[[5]][[1]]
[[5]][[1]]$Keyword
[1] "13"
[[5]][[1]]$Offset
[1] 1
[[6]]
list()
[[7]]
list()
[[8]]
list()
[[9]]
list()
[[10]]
list()
[[11]]
[[11]][[1]]
[[11]][[1]]$Keyword
[1] "13"
[[11]][[1]]$Offset
[1] 1
[[12]]
[[12]][[1]]
[[12]][[1]]$Keyword
[1] "13"
[[12]][[1]]$Offset
[1] 1
我想要的是列表不为空的行的索引。这意味着在这种情况下它将是 5、11、12。我尝试这样做:
xyz <- vector('list', length(SearchNew))
for(i in seq_along(SearchNew)){
for(j in seq_along(SearchNew[[i]])){
if (length(SearchNew[[i]]) > 0)
xyz <- i
}
}
但这给了我很多 NULL 行的矩阵。而且我不能只给 xyz 3 行,因为我不知道列表中有很多非空行。我是 R 新手,所以我不知道如何解决这个问题。有什么帮助吗?
【问题讨论】: