2016-09-01 138 views
0

問題很簡單,但我沒有修好它的運氣。 strsplit()是一個相當簡單的函數,我很驚訝我掙扎着和我一樣多:R - strsplit不工作,字母之間的字符不是空格?

# temp is the problem string. temp is copy/pasted from my R code. 
# i am hoping the third character, the space, which i think is the error, remains the error 
temp = "GS PG" 

# temp2 is created in stackoverflow, using an actual space 
temp2 = "GS PG" 

unlist(strsplit(temp, split = " ")) 
[1] "GS PG" 
unlist(strsplit(temp2, split = " ")) 
[1] "GS" "PG" 


即使它在這裏不起作用,試圖重現這個例子,這是我遇到的問題。對於temp,代碼不會因爲某些奇怪的原因而將空間上的變量分開。任何想法將不勝感激!

最好,

編輯 - 我的例子未能重新創建問題。作爲參考,在我的代碼中通過從rvest在線獲取代碼來創建臨時文件,並且出於某種原因,我認爲它必須是刮除正常空間以外的其他角色。我需要通過空格拆分這些字符串。

+0

我可以用可重複的代碼發佈,但是這將涉及發佈的rvest()刮的代碼爲好,這是我不介意,但想看看我們是否可以先找到解決方案 – Canovice

+0

當你執行grep(「」,temp)「時會發生什麼?然後你可以嘗試'grep(「\ t \ n \ r \ v \ f」,temp)'來查看這些空格字符是否有效。 –

+0

'grep(「」,temp)''返回整數(0)' – Canovice

回答

3

嘗試以下操作:

unlist(strsplit(temp, "\\s+")) 

"\\s+"爲任何類型的空白的正則表達式搜索,而不是隻是一個標準的空間。

+0

也''[[:space:]] +'使用POSIX正則表達式 – hrbrmstr

0

正如評論,

這是可能的「空間」並不是一個真正的空間,但一些其他的空白字符。 嘗試以下任一來縮小範圍:

whitespace <- c(" ", "\t" , "\n", "\r", "\v", "\f") 
grep(paste(whitespace,collapse="|"), temp) 

相關的問題在這裏: How to remove all whitespace from a string?

相關問題