MSR
не позволяет перезаписать переменную в месте с другим типом переменной.
У вас есть два варианта: записать в другую переменную или записать в другой файл. Я добавил немного кода, который показывает, что оба решения работают, как указано в 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 не позволяет манипулировать существующей переменной на месте? – JimBoy
Я не в команде разработчиков, поэтому я не могу дать окончательный ответ, но это было бы по соображениям производительности. –