SparkRを使用していて、列に含まれる文字列の最後の文字を分離するためにsubstr()
コマンドを使用します。私は一定の開始位置と終了位置に設定した場合、私は仕事にsubstr()
を取得することができます。SparkRのDataFrame列でのsubstr()の使用
sdfIris <- createDataFrame(sqlContext, iris)
sdfIris$Len <- length(sdfIris$Species)
sdfIris$Last <- substr(sdfIris$Species, sdfIris$Len, sdfIris$Len)
エラー:
substr(sdfIris$Species, 8, 8)
をしかし、私はデータフレームからソース値を使用してこれらのパラメータを設定しようとすると、 as.integerに(開始 - 1):タイプ「整数」のベクトルにタイプ「S4」を強制することができない
結果がから戻されると思われますはおそらく1セルのDataFrameであり、パラメータには整数が必要です。
私はcollect(sdfIris$Len)
を試してみましたが、している:関数の継承された方法を見つけることができませんでした署名は '収集' ' "列"'
これは
substr()
は、データフレームとしてsdfIris$Len
を見ているようだ。ちぐはぐなようだが、collect()
は列としてそれを見ているようだ。私はすでに仕事-Aを同定しているregisterTempTable
を使用し、最後の文字を分離するためにSparkSQLのsubstrを使用していましたが、私はSQLへの不要な切り替えを避けることを望んでいました。Dynamic StartとFinishパラメータを持つDataFrame列でSparkR
substr()
を使用するにはどうすればよいですか?
thanks @ zero323!それは今のところうまくいく - 私は最初にregisterTempTable()を呼び出す必要はありません。私は、私の必要性がバグか機能要求かどうかをスパークプロジェクトに問い合わせようとします。 – SpiritusPrana
機能のリクエスト。 JVM上に動的オフセットを持つデータフレームAPIはありません。これはRで公開できませんでした。 – zero323
もう一度ありがとうございます! – SpiritusPrana