Ниже я делаю одну и ту же операцию двумя способами. Первый не работает, а второй работает. Мне интересно, почему? Мне не удалось найти ответ на этот вопрос в документации data.table или других местах через Google.
SOtable <- data.table(testInt=c(1:100))
SOtable[,testInt := as.double(testInt), by=1:nrow(SOtable)]
##Error in `[.data.table`(SOtable, , `:=`(testInt, as.double(testInt)), :
## Type of RHS ('double') must match LHS ('integer'). To check and coerce would impact performance too much for the fastest cases. Either change the type of the target column, or coerce the RHS of := yourself (e.g. by using 1L instead of 1)
SOtable[,testInt := as.double(testInt)]
Причина, по которой я попробовал это, заключается в том, что я хотел выполнить некоторые манипуляции со столбцом в большой таблице данных для каждой строки, но как только я использую by
, я получаю ошибку LHS/RHS. Но пока я это печатаю, я думаю: "Может быть, мне стоило использовать для этого какую-нибудь функцию apply
?"