2015-06-29 131 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

相關問題