2017-05-19 8 views
0

「 - 」区切り文字に基づいて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を使用してみました。

答えて

1

stringidata.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 
0

あなたは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))}) 
+0

lastdelim = tail(gregexpr( " - "、 "x" [1]]、n = 1) gregexpr( " - "、x)のエラー:オブジェクト 'x'がエラーになりました。 – ericbrownaustin

+0

私の悪い、 'x'は' a'だったはずです(私は途中で名前を変更し、どこでも更新しませんでした) – Bea

関連する問題