0

私はいくつかの分散コンピューティング作業に H2O を使用していh2oます (R のパッケージを介して)。R の基本関数の多くは存在しますが、関数の適切な代替が見つかりませんsubstr。私はsubandgsub関数にアクセスでき、回避策として何らかの形式の正規表現を使用することを望んでいました。

私は次のコードを使用していますが、運がありません:

    df1 <- data.frame(id = 1:10, var1 = seq(14102201,14103200, 100))
    df1$var2 <- substr(df1$var1, 1,6)
    df1$var3 <- gsub('\\d{1,8}','\\d{1,6}', df1$var1)
    df1

の出力df1$var2は、私が探しているものです。助言がありますか?

編集:このコードを実行:

library(h2o)
localH2O = h2o.init(nthreads = 2) 
df1 <- data.frame(id = 1:10, var1 = seq(14102201,14103200, 100))
df1.hex <- as.h2o(localH2O , df1)
df1.hex$var2 <- substr(df1.hex$var1, 1, 6)

次のメッセージを取得します。

> df1.hex$var2 <- substr(df1.hex$var1, 1, 6)
Error in as.character.default(x) : 
  no method for coercing this S4 class to a vector
4

3 に答える 3

1

文字列全体に一致するパターンを使用して、最初の 6 つの値をキャプチャします。

gsub('^(.{6}).*$','\\1', df1$var1)

のもう少し一般的な置き換えsubstr(x,start,stop)

if(start > 1)
     gsub('^(.{*start-1*})(.{*stop-start+1*})).*$','\\1', 'asdfhjkl')
else
     gsub('^(.{*stop*})).*$','\\1', 'asdfhjkl')

*ここで、文字間の値は式の実際の整数値です。(ただし、nchar(x)が 未満であることを確認する必要があります。stopそうしないと、文字列が短すぎるためにパターンが一致しません。)

于 2015-01-28T21:29:39.460 に答える