首页 > 解决方案 > 尝试使用 for-loop 访问 gregexpr 结果的第一个值但只获得 -1 - 意外结果

问题描述

我正在使用 gregexpr 来查找与“犯罪”或“盗窃”相关的观察结果。我从这段代码开始:

test <- gregexpr("criminal|theft", df.cleaned$Nature, ignore.case = T)

这是测试的数据输出:https ://pastebin.com/XFQXPx4A

如果 gregexpr 输出的第一个元素的输出为 -1,则 df.cleaned$Nature 的相应行不包含“犯罪”或“盗窃”。我试图仅提取该数据以最终确定这些字符串出现的位置。

例如:

> df.cleaned$Nature[1]
[1] "Criminal Trespass"

因此,

> test[[1]][1]
[1] 1

反过来:

> df.cleaned$Nature[15]
[1] "Drug Law Violation"

因此,

> test[[15]][1]
[1] -1

所以我尝试构建这个for循环:

results <- vector(length=length(test))
for (i in seq_along(test)) {
  results[1] <- test[[i]][1]
   results <- data.frame(results)
}

但是输出只有-1的434个值。是什么赋予了?

标签: rfor-loop

解决方案


尝试:

results <- vector(length=length(test))
for (i in seq_along(test)) {
  results[[i]] <- test[[i]][1]
}

推荐阅读