[英]Replacing elements within a string in R
我在R的數據框中有一行,它由長度不確定的0s 1s和2s作為字符的序列組成。 所以“ 01”,“ 010”,“ 201”,“ 102”,“ 00012” ...這樣的事情。
我想找到一種方法來確定字符串中的最后一個字符是否在數值上最大。 將行保留在數據框中作為字符用於其他目的很重要。 因此,基本上我想使用substr(x, nchar(x), nchar(x))
並確定它是否為數字,是字符串中最大的數字。
我對如何執行此操作迷失了,因為我對正則表達式並不十分熟悉,而且我不得不在處理字符和數字等元素之間來回切換。
提前致謝。
〜莫琳
令df
為數據幀的名稱,字符串序列為“ 01”,“ 010”,“ 201”,“ 102”,“ 00012”的行為No.2。 如果字符串中的最后一個字符在數值上最大,則可以得到一個向量來回答這個問題:
sapply(strsplit(as.character(df[2,]),""),function(x) x[length(x)] >= max(x))
[1] TRUE FALSE FALSE TRUE TRUE
一種方法是
p <- as.numeric(strsplit("0120102","")[[1]])
if (max(p) == p[length(p)]) {
print("yes")
}
實際上,您可以忽略as.numeric(),因為“ 2”>“ 1”>“ 0”:
p <- strsplit("0120102", "")[[1]]
如果要將其應用於data.frame A:
apply(A, c(1,2), function(z) {p<-strsplit(z, "")[[1]];(max(p) == p[length(p)])})
正則表達式為[0-9] $以獲得最后一個數字,其余邏輯取決於您所開發的環境。
我認為您最好的選擇是看看regex在R語言中的工作方式:
http://www.regular-expressions.info/rlanguage.html
就像上面的帖子中的Dan Heberden所說的那樣,您需要對在示例中給出的字符串進行標記化,然后grep(...?)將正則表達式“ [0-9] $”的標記化。 順便說一下,使用正則表達式,您可以將所有內容都視為字符,因此,除了在獲取grep函數的結果並將其解析為數字形式時,您不必在數字和字符模式之間來回穿梭比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.