0

name1, name2 and name3, 0, 1, 2orの形式の文字列が多数ありname1, name2, name3 and name4, 0, 1, 2、ベクトルを 4 つの要素に分割したいと考えています。最初の要素は名前のテキスト文字列全体になります。問題は、strsplit がテキストと数値を区別せず、最初の例では文字列を 5 つの要素に分割し、2 番目の例では 6 つの要素に分割することです。可変数の名前を持つ文字列のテキスト部分を動的にスキップするように R に指示するにはどうすればよいですか?

4

2 に答える 2

3

主なオプションは 2 つあります。
(1) 数値を grep し、それらを抽出します。
(2) カンマで分割し、数値に強制してNAsをチェックする

私は2番目のほうが好きです

splat <- strsplit(x, ",")[[1]]
numbs <- !is.na(suppressWarnings(as.numeric(splat)))

c(paste(splat[!numbs], collapse=","), splat[numbs])
# [1] "name1, name2 and name3" " 0" " 1" " 2"
于 2013-10-06T20:15:54.140 に答える
2

適切な場所に区切り記号を挿入して、それを分割することもできます。

delimmed <- gsub('(.*[a-z][0-9]+| [0-9]+),','\\1%',strr)
strsplit(delimmed,'%')

正規表現の最初の部分 ( の左側)は、最後の文字-数字-コンマの組み合わせまで|( ) すべてに一致します。.*2 番目は、任意のスペース-数字-カンマの組み合わせに一致します。コンマは (括弧の外にあるため) 削除され、 に置き換えられ%ます。

于 2013-10-06T21:55:32.357 に答える