元の列「Var1」を次のMSRコードで置き換えないのはなぜですか?MSRのexistng列を置き換えます。
rxDataStep(inData = input_xdf, outFile = input_xdf, overwrite = TRUE,
transforms = list(Var1 = as.numeric(Var1)),
transformVars = c("Var1")
)
元の列「Var1」を次のMSRコードで置き換えないのはなぜですか?MSRのexistng列を置き換えます。
rxDataStep(inData = input_xdf, outFile = input_xdf, overwrite = TRUE,
transforms = list(Var1 = as.numeric(Var1)),
transformVars = c("Var1")
)
、RevoScaleRは(あなたが別のファイルに書き込む場合でも)XDFファイル内の変数の型を変更することはできません。それを行う方法は、新しい変数を作成し、古い変数を削除し、新しい変数の名前を古い名前に変更することです。
私はtransformFuncでこれをやってお勧めしますが、新しい変数を作成し、古いをドロップすることができるように、すべてのワンステップで、(詳細については?rxTransform
を参照してください):
rxDataStep(inXdf, outXdf, transformFunc=function(varlst) {
varlst$Var1b <- as.numeric(varlst$Var1)
varlst$Var1 <- NULL
varlst
}, transformVars="Var1")
# this is fast as it only modifies the xdf metadata, not the data itself
names(outXdf)[names(outXdf) == "Var1b"] <- "Var1"
MSR
は、異なる変数型で所定の位置に変数を上書きすることはできません。
次の2つのオプションがあります。異なる変数に書き込むか、別のファイルに書き込む。私は、両方のソリューションがMRS 9.0.1
に記載されているように動作することを示すコードを追加しました。コメントに記載されているように、これは動作しない可能性がある以前のバージョンにはいくつかの点があります。私はその点がどこにあるか完全にはわかっていないので、コードはあなたに知らせるべきです。現時点で
input_xdf <- "test.xdf"
modified_xdf <- "test_out.xdf"
xdf_data <- data.frame(Var1 = as.character(1:10),
Var2 = 2:11,
stringsAsFactors = FALSE)
rxDataStep(inData = xdf_data,
outFile = input_xdf,
rowsPerRead = 5,
overwrite = TRUE)
rxDataStep(inData = input_xdf,
outFile = input_xdf,
overwrite = TRUE,
transforms = list(Var1b = as.numeric(Var1)),
transformVars = c("Var1")
)
rxGetInfo(input_xdf, getVarInfo = TRUE, numRows = 5)
rxDataStep(inData = input_xdf,
outFile = modified_xdf,
transforms = list(Var1 = as.numeric(Var1)),
transformVars = c("Var1")
)
rxGetInfo(modified_xdf, getVarInfo = TRUE, numRows = 5)
実際には、あなたの目のオプションは勝ちましたRevoScaleRの厄介ないぼのひとつ。私はあなたが別のファイルに書き込むとしても、既存の変数の型を変更する方法はないと思います。 –
@HongOoi、それは以前は本当だったかもしれませんが、今は真実ではありません。私は投稿する前にテストしました。どちらのソリューションも機能します。私はそれを実際の例にするためにいくつかのコードを追加します。 –
私は混在した結果を得ています。メールが送信されました。 –
RevoScaleRが既存の変数を適切に操作できない理由は何ですか? – JimBoy
私はエンジニアリングチームに参加していないので、決定的な答えは得られませんが、パフォーマンス上の理由からです。 –