2017-03-23 16 views
1

刪除字符I有一個數據幀,如下給出:從串中的R

data$Latitude 
"+28.666428" "+28.666470" "+28.666376" "+28.666441" "+28.666330" "+28.666391" 

str(data$Latitude) 
Factor w/ 1368 levels "+10.037451","+10.037457",.. 

我想從每個緯度值的刪除「+」字符。 我嘗試使用gsub()

data$Latitude<-gsub("+","",as.character(factor(data$Latitude))) 

這是行不通的。

+4

添加'固定在'gsub' = TRUE',或逃避它'\\ +' – Sotos

+1

或者只是'as.numeric(as.character(「+ 28.666428" ))'。 –

+1

@Sotos:感謝buddy..that工作..也回覆很快:) –

回答

0

您可以使用組合sapply,substringregexpr來實現結果。
regexpr(<character>,<vector>)[1]爲您提供了角色的索引。
使用該值作爲substring的起始索引,可以分隔字符串的其餘部分。
sapply允許您循環訪問值。

這是數據。

d<-c("+28.666428","+28.666470","+28.666376","+28.666441","+28.666330") 

這是邏輯。

v <- sapply(d, FUN = function(d){substring(d, regexpr('+',d) + 1, nchar(d))}, USE.NAMES=FALSE) 

這裏是輸出

> v 
[1] "28.666428" "28.666470" "28.666376" "28.666441" "28.666330" "28.666391" 
+2

'regexpr('+',d)'不會做你認爲它的事情(用'd ='foo'' ) - 我不完全確定R爲什麼會接受這個,因爲它是一個無效的正則表達式,它應該會拋出一個錯誤。而且,這個解決方案非常複雜。 'gsub'也可以。 –