我在strsplit()
中發現了一個非常奇怪的行爲。它與this question類似,但我很想知道爲什麼它首先返回一個空元素。有人知道嗎?strsplit返回隱形元素
unlist(strsplit("88F5T7F4T13F", "\\d+"))
[1] "" "F" "T" "F" "T" "F"
由於我使用該字符串VOR再現長的邏輯矢量(88 * FALSE 5 * TRUE 7 * FALSE 4 * TRUE 13 * FALSE)我要相信它......
回答unlist(strsplit("88F5T7F4T13F", "\\d+"))[-1]
作品,但它是否健壯?
這是正常現象,在文檔中進行了說明。 –
因爲在開始時有數字,所以出現空的元素。由於在數字處進行分割,因此第一次分割會在字符串的開頭和第一個「F」之間進行,而字符串開頭處的空字符串會添加到結果列表中。你可以使用'unlist(strsplit(sub(「^ \\ d +」,「」,「88F5T7F4T13F」),「\\ d +」))'或你的解決方案。 –
爲了以更系統的方式刪除空元素,您還可以使用num_split = unlist(strsplit(「88F5T7F4T13F」,「\\ d +」)); num_split = num_split [num_split!=「」] –