Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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_Vector_Indexing_Replace - Fatal编程技术网

R 删除数据列中不包含';不匹配列表的任何部分?

R 删除数据列中不包含';不匹配列表的任何部分?,r,vector,indexing,replace,R,Vector,Indexing,Replace,我有一个数据框,其中有一列歌曲标题、标签信息和其他凌乱的字符串数据。我还有一个特定歌曲标题的独立载体。我想从歌曲标题中过滤掉所有不匹配的角色。我正在使用类似的东西,但是显示错误 song.list <- c("Song.1","Song.2", "Song.3") Mydata$Songs <- My data column containing all sorts of things including the songs I'm after levels(Mydata$Son

我有一个数据框,其中有一列歌曲标题、标签信息和其他凌乱的字符串数据。我还有一个特定歌曲标题的独立载体。我想从歌曲标题中过滤掉所有不匹配的角色。我正在使用类似的东西,但是显示错误

song.list <- c("Song.1","Song.2", "Song.3")
Mydata$Songs <- My data column containing all sorts of things including the songs I'm after

 levels(Mydata$Songs)[(Mydata$Songs) %in% song.list] <- "" #I'd like the opposite of this
 levels(Mydata$Songs)![(Mydata$Songs) %in% song.list] <- ""#My use of '!' doesn't work

song.list我还没能想出一个矢量化的解决方案,但是如果我理解正确的话,这个因子级别的循环应该可以完成这项工作:

library(stringr)

for (level in levels(df$A)) {
  match <- na.omit(str_extract(level, song.list))
  if (length(match) > 0) {
    levels(df$A)[levels(df$A) == level] <- match
  }
}
库(stringr)
用于(级别中的级别(df$A)){
匹配0){

级别(df$A)[levels(df$A)=level]你把
放错地方了!
[!(Mydata$Songs)%in%song.list]
。你好,Oriol,谢谢。这与我想做的很接近,但我想过滤掉字符串中与歌曲列表不匹配的部分。基本上,我正在尝试从混乱的字符串列中提取歌曲。你能给我举一个例子说明几行
Mydata$songs
的内容吗?有了这些信息,我应该是嗨,奥利奥,这是数据列第一行所包含内容的一个示例:[1]Walkin'Blues(如R.Johnson)\n\n\n生皮-\n\n 1987-1991年各类录音棚录音‎(CDr,Comp,Ltd)我想推出像“Walkin Blues”这样的歌曲。每一行包含不同的歌曲和其他字符串数据。我在答案中添加了一个新的尝试来解决此问题。如果有任何问题,请告诉我。嗨,Oriol,谢谢。这似乎效果很好。我正在尝试做类似的事情,但我没有成功。谢谢你的帮助;我为你的答案添加了一个“检查”。
levels(Mydata$Songs)[!Mydata$Songs %in% song.list] <- ""