Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的下标越界_R_Regex_Text Mining_Stringr - Fatal编程技术网

R中的下标越界

R中的下标越界,r,regex,text-mining,stringr,R,Regex,Text Mining,Stringr,我想从名称中删除某些元素 名称是字符列表。在我运行以下循环之后: for (i in 1:length(names)){ if((str_detect(names[[i]], " Organisation Name")) || (str_detect(names[[i]], "^ $")) || (str_detect(names[[i]], "^0$")) || (str_detect(names[[i]], "^$")) ){ names[[i]] <- NU

我想从
名称中删除某些元素

名称
是字符列表。在我运行以下循环之后:

for (i in 1:length(names)){
  if((str_detect(names[[i]], "  Organisation Name")) || 
  (str_detect(names[[i]], "^ $")) || (str_detect(names[[i]], "^0$")) || 
  (str_detect(names[[i]], "^$"))  ){
   names[[i]] <- NULL
 }
}
for(1中的i:长度(名称)){
如果((stru|u detect(名称[[i]],“组织名称”))|
(str_detect(名称[[i]],“^$”)||(str_detect(名称[[i]],“^0$”)||
(str_detect(名称[[i]],“^$”){

names[[i]]以下是一些代码,根据我的评论说明了我的想法

names <- lapply(1:5, list)
for (i in 1:length(names)) {
  names[[i]] <- NULL
  print(sprintf('Length is now %d, i is now %i', length(names), i))
  print(names[[i]])
}

如果您向后迭代,就像使用
for(长度为i(名称):1)
那样,这可能会起作用

下面是一些代码,根据我的评论说明了我的想法

names <- lapply(1:5, list)
for (i in 1:length(names)) {
  names[[i]] <- NULL
  print(sprintf('Length is now %d, i is now %i', length(names), i))
  print(names[[i]])
}
如果您向后迭代,就像使用
for(i in length(names):1)
那样,这可能会起作用,因为您正在过滤数据,我建议您使用内置的过滤功能,例如
grepl

将所有regexpa合并为一个,以获得更好的性能和紧凑性。

由于您要过滤数据,我建议您使用内置的过滤功能,例如
grepl


将所有regexpa合并为一个,以获得更好的性能和紧凑性。

在寻求帮助时,您应该包括一个简单的示例输入和所需的输出,用于测试和验证可能的解决方案。我猜,当您删除名称元素时,“I”vector仍然会迭代到原始长度,因此您最终会捕获一个越界元素。也许可以尝试从长度(名称)向后迭代:1?即使我猜对了,@MrFlick关于可复制的示例是对的,你应该为后代编辑这个问题!在寻求帮助时,你应该包括一个简单的示例输入和所需的输出,用于测试和验证可能的解决方案。我猜,当你删除名称的元素时,“I”vector仍然会迭代到原始长度,因此您最终会捕获一个越界元素。也许可以尝试从长度(名称)向后迭代:1?即使我猜对了,@MrFlick对于可复制的示例是正确的,您应该为后代编辑该问题!谢谢,@Anony Mousse。这是真的。谢谢,@Anony Mousse。这是真的。