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

R 仅当找到完全匹配项时才从字符串中删除链接

R 仅当找到完全匹配项时才从字符串中删除链接,r,R,我有一些数据,我想删除包含https://someWebsiteLink.com。但是,我只想删除独立链接 我试过:str\u删除(链接,”https://someWebsiteLink.com“”删除所有https://someWebsiteLink.com。我还试图仅在字符数大于某个值时删除实例 sapply(strsplit(as.character(urls), "\\s+"), function(x){str_remove(x[nchar(x) >= 8],

我有一些数据,我想删除包含
https://someWebsiteLink.com
。但是,我只想删除独立链接

我试过:
str\u删除(链接,”https://someWebsiteLink.com“”
删除所有
https://someWebsiteLink.com
。我还试图仅在字符数大于某个值时删除实例

sapply(strsplit(as.character(urls), "\\s+"), function(x){str_remove(x[nchar(x) >= 8], "https://someWebsiteLink.com")})
这给了我同样的结果

预期产出:

"https://someWebsiteLink.com/companies/CompanyA"
""
"https://someWebsiteLink.com/companies/CompanyB"
""
数据:


links当您想要精确匹配整个字符串时,不要使用正则表达式。使用
=
或%
中的
%进行整个字符串的精确匹配

links[links == "https://someWebsiteLink.com"] <- ""
links
# [1] "https://someWebsiteLink.com/companies/CompanyA" ""                                              
# [3] "https://someWebsiteLink.com/companies/CompanyB" ""        
当您使用正则表达式的模式匹配功能和/或希望查看字符串内部,而不一定是整个字符串时,请使用正则表达式

您可以使用正则表达式通过使用
^
$
锚定字符串的开头和结尾:

str_replace(links, "^https://someWebsiteLink.com$", "")
# [1] "https://someWebsiteLink.com/companies/CompanyA" ""                                              
# [3] "https://someWebsiteLink.com/companies/CompanyB" ""             
但这比简单地使用上面的
==
效率要低。但是,它更强大,因为您可以(例如)匹配该字符串,无论它是否以
/
结尾(使用
量词):


我设法找到了一些可行的解决办法。如果有人有一个“更好”的,不会产生警告信息,那就太好了

links2 <- sapply(strsplit(as.character(links), "\\s+"), function(x){x[nchar(x) < 8|x != "https://someWebsiteLink.com"]}) %>% str_c()
links3 <- lapply(links2, function(x) if(identical(x, "character(0)")) "" else x) %>% str_c()
除此警告消息外:

警告消息:在stri_c(…,sep=sep,collapse=collapse, 忽略(null=TRUE):参数不是原子向量;胁迫


尝试
links[nchar(links)<8 | links!='https://someWebsiteLink.com']
谢谢!这几乎是我想要的。有没有办法让空的“'”链接保持在当前位置?这个解决方案删除了''''''空字符串。我想这会得到我想要的
sapply(strsplit(作为.character(URL),“\\s+”),函数(x){x[nchar(x)<8|x!=”https://myWebsite.com“]})%%>%str_c()
然而,我得到一个警告
参数不是原子向量;强制
-现在我想把所有的
字符(0)
压缩为
空字符。是的,你的解决方案比我的要优雅得多!再次感谢!我在网站链接的开头和结尾缺少
^
$
str_replace(links, "^https://someWebsiteLink.com$", "")
# [1] "https://someWebsiteLink.com/companies/CompanyA" ""                                              
# [3] "https://someWebsiteLink.com/companies/CompanyB" ""             
str_replace(links, "https://someWebsiteLink.com/?$", "")
# [1] "https://someWebsiteLink.com/companies/CompanyA" ""                                              
# [3] "https://someWebsiteLink.com/companies/CompanyB" ""             
links2 <- sapply(strsplit(as.character(links), "\\s+"), function(x){x[nchar(x) < 8|x != "https://someWebsiteLink.com"]}) %>% str_c()
links3 <- lapply(links2, function(x) if(identical(x, "character(0)")) "" else x) %>% str_c()
[1] "https://someWebsiteLink.com/companies/CompanyA" ""                                               "https://someWebsiteLink.com/companies/CompanyB"
[4] ""