「 - 」区切り文字に基づいて2つの変数に分割したい文字変数がありますが、最後の区切り文字に基づいて区切りたい場合があります文字列内に複数の " - "がある例:最後の区切り文字のみをrに使用する分割文字列
Input Output1 Output2
foo - bar foo bar
hey-now-man hey-now man
say-now-girl say-now girl
fine-now fine now
strsplitを使用してみました。
「 - 」区切り文字に基づいて2つの変数に分割したい文字変数がありますが、最後の区切り文字に基づいて区切りたい場合があります文字列内に複数の " - "がある例:最後の区切り文字のみをrに使用する分割文字列
Input Output1 Output2
foo - bar foo bar
hey-now-man hey-now man
say-now-girl say-now girl
fine-now fine now
strsplitを使用してみました。
stringi
とdata.table
に基づくソリューション:文字列を逆にし、固定項目に分割して、バックリバース:
library(stringi)
x <- c('foo - bar', 'hey-now-man', 'say-now-girl', 'fine-now')
lapply(stri_split_regex(stri_reverse(x), pattern = '[-\\s]+', n = 2), stri_reverse)
私たちがしたい場合はdata.frame
を次のように設定します。
y <- lapply(stri_split_regex(stri_reverse(x), pattern = '[-\\s]+', n = 2), stri_reverse)
y <- setNames(data.table::transpose(y)[2:1], c('output1', 'output2'))
df <- as.data.frame(c(list(input = x), y))
# > df
# input output1 output2
# 1 foo - bar foo bar
# 2 hey-now-man hey-now man
# 3 say-now-girl say-now girl
# 4 fine-now fine now
あなたはgregexpr
を使用して試すことができます:
a=c("foo - bar","hey-now-man","say-now-girl","fine-now")
lastdelim = tail(gregexpr("-",a)[[1]],n=1)
output1 = sapply(a,function(x) {substr(x,1,lastdelim-1)})
output2 = sapply(a,function(x) {substr(x,lastdelim+1,nchar(x))})
lastdelim = tail(gregexpr( " - "、 "x" [1]]、n = 1) gregexpr( " - "、x)のエラー:オブジェクト 'x'がエラーになりました。 – ericbrownaustin
私の悪い、 'x'は' a'だったはずです(私は途中で名前を変更し、どこでも更新しませんでした) – Bea