Я попытался воспроизвести проблему, создав объект, подобный описанному в вопросе (который я сейчас отредактировал в вопросе), и добавив к нему несколько дополнительных фальшивых строк.
library(Matrix)
Likes <- data.frame(userid=c("n1","n2"),
m1=c(0,1),
m2=c(0,0),
m3=c(0,0),
m4=c(1,0)
)
Iобнаружил, что запуск вашего кода на этом выдал другую ошибку:
sM_Likes <- sparseMatrix(Likes, i=likes$userid, j=1,c(2:ncol(Likes)), x=1)
Ошибка в sparseMatrix (Likes, i = likes $ userid, j = 1, c (2: ncol (Likes)),: точно один из 'i', 'j' или 'p' должен отсутствовать в вызове
Я упоминал об этом пару раз в комментариях как то, что, как я думал, вызывало проблему. Выисправил спецификацию вашего аргумента j
, и теперь он работает:)
В комментариях к именам столбцов вы также задали дополнительный вопрос.Я думаю, что это должно решить, что:
devtools::install_github("ben519/mltools")
require(mltools)
dt <- data.table(
intCol=c(1L, NA_integer_, 3L, 0L),
realCol=c(NA, 2, NA, NA),
logCol=c(TRUE, FALSE, TRUE, FALSE),
ofCol=factor(c("a", "b", NA, "b"), levels=c("a", "b", "c"), ordered=TRUE),
ufCol=factor(c("a", NA, "c", "b"), ordered=FALSE)
)
sparsify(dt)
sparsify(dt, sparsifyNAs=TRUE)
sparsify(dt[, list(realCol)], naCols="identify")
sparsify(dt[, list(realCol)], naCols="efficient")