我有一个像
这样的列的数据集 string<-c('lib1_Rstudio_case1','lib2_Rstudio_case1and2','lib5_python_notthe correct_language','lib3_Jupyter_really_good','lib1_spyder_nice','lib1_R_the_core')
replacement<-c('Rstudio','Jupyter','spyder','R')
我想替换它们与替换值匹配的字符串值id。我现在正在使用以下代码
gsub(paste(replacement, collapse = "|"), replacement = replacement, x = string)
这是我用来查找案例的另一段代码
string[grepl(paste(replacement, collapse='|'), string, ignore.case=TRUE)]
我想更新我发现的那些 我希望输出像
Rstudio,Rstudio,'',Jupyter,spyder,R
我不想通过硬编码来做到这一点。我想编写一个可扩展的代码。
非常感谢任何帮助
提前致谢
答案 0 :(得分:1)
使用Microsoft Visual Studio is busy...
函数隔离id
,然后通过gsub
函数找到与id
长度不匹配的replacement
。然后用空字符is.na
替换标识的ID。
编辑:由于您更改了问题中的字符串数据,因此我修改了''
函数。 gsub
函数中使用的模式将在gsub
文本后面找到数值,并省略字符串元素的剩余部分。
lib
答案 1 :(得分:1)
我使用的另一个简单代码。这不需要正则表达式函数。谢谢你的帮助
string<-c('lib1_Rstudio_case1','lib2_Rstudio_case1and2','lib5_python_notthe correct_language','lib3_Jupyter_really_good','lib1_spyder_nice','lib1_R_the_core')
replacement<-c('R','Jupyter','spyder','Rstudio')
replaced=string
replaced=''
for (i in 1:length(replacement))
{
replaced[which(grepl(replacement[i],string))]=replacement[i]
}
replaced[is.na(replaced)]=''