假設你有序列aaa和ata,怎麼用r比較它們的差異,即第二個字元,並返回差異的位點與字元?
我用谷歌搜尋這個問題時發現stackoverflow上有類似的提問,但不完全一致,基本就是問找出差異的字元,並沒有我想要的這麼全。提供的解決方案有兩種:
do.call(setdiff, strsplit(c(a, b), split = ""))
# 或者
reduce(setdiff, strsplit(c(a, b), split = ""))
a,b是兩個字串。
> do.call(setdiff, strsplit(c("ata", "aaa"), split = ""))
[1] "t"
> reduce(setdiff, strsplit(c("ata", "aaa"), split = ""))
[1] "t"
神奇的是,如果你將兩個序列呼喚,就不work了!
> reduce(setdiff, strsplit(c("aaa", "ata"), split = ""))
character(0)
> do.call(setdiff, strsplit(c("aaa", "ata"), split = ""))
character(0)
list_string_diff = function(a, b, exclude = c("-", "?"), ignore.case = true, show.excluded = false, only.position = true)
split_seqs = strsplit(c(a, b), split = "")
only.diff = split_seqs[[1]] != split_seqs[[2]]
only.diff[
(split_seqs[[1]] %in% exclude) |
(split_seqs[[2]] %in% exclude)
] = na
diff.info = data.frame(which(is.na(only.diff)|only.diff),
split_seqs[[1]][only.diff], split_seqs[[2]][only.diff])
names(diff.info) = c("position", "seq.a", "seq.b")
if(!show.excluded) diff.info = na.omit(diff.info)
if(only.position)else diff.info
}
這個函式 可以同時記錄位置和原始序列,並可以忽略大小寫,甚至排除一些序列,為了使結果簡化,我新增了只返回位置的預設引數。
python字串比較大小
字串按位比較,兩個字串第一位字元的ascii碼誰大,字串就大,不再比較後面的 第乙個字元相同就比第二個字串,以此類推,需要注意的是空格的ascii碼是32,空 null 的ascii碼是0 ord 函式接受乙個字元 print max 1 2 3 3 print max 31 2 3 31 prin...
Python字串比較大小
字串按位比較,兩個字串第一位字元的ascii碼誰大,字串就大,不再比較後面的 第乙個字元相同就比第二個字串,以此類推,需要注意的是空格的ascii碼是32,空 null 的ascii碼是0,大寫字母和小寫字母的ascii不同 m abc abc bac abc print m 0 m 1 print...
js 字串數值比較大小
寫專案模組中有乙個功能需要限定乙個inputnumber的上限,onchange超過上限,彈出提示資訊 但是遇到乙個奇葩問題,偶爾沒有超過上限也會彈出超出上限的問題 最後排查出來了問題,是因為後台返回的上限是string 1.比較的都是number console 1 2 毫無疑問 false 2....