2015-06-29 102 views
1

我有一个很多值的变量,其中一个值就像'Blamo BSM258 Clem on/o',我想用'BSM'替换它。 换句话说,我想用'BSM'替换包含'BSM'的变量的每个值。如何用字符串本身替换包含字符串的变量?

我使用

sub("(BSM)", "BSM", data$variable) 

data$variable[grep("(BSM)", data$variable)]<-"BSM" 

尝试,但它不工作。 (它使“NA”的值)

+0

你的第二次尝试对我来说似乎也适用于即使使用NAs。你能提供一些失败的示例数据吗? – Molx

回答

1

为什么不干脆:

gsub('BSM', '"BSM"', 'Blamo BSM258 Clem on/o') 
+0

这真的有用吗?我的输出是''Blamo \“BSM \”258 Clem on/o“',这是带引号的原始字符串。 – Molx

+0

我还会得到 “Blamo \”BSM \“258 Clem on/o” – SparkUser

+0

您的问题确实如此,插入“围绕BSM?(注意RGUI上的显示器/) –

0

使用子或GSUB只替换字符串中的模式,所以你只是用“BSM”不是整个更换“BSM”串。但第二个例子,grep应该工作。如果您在字符串中查找“BSM”,则不需要在grep命令中使用括号,只需传递data$variable[grep("BSM", data$variable)]<-"BSM",并且所有内容都应该正确完成。

data是什么结构?它是一个列表还是数据框?如果它是一个列表,那么$可能没有正确编制索引,这可能会导致NA值。

+0

这是一个数据帧,但是这个变量是根据因子来读取的......我不知道如何防止它,下面是我的警告信息:'[< - 。factor'(' * tmp *',grep(“[[:alpha:]] [[:space:]] BSM [[:digit:]]”,:无效因子级,生成NA。 – SparkUser

相关问题