in R: Setting new Values in a data.table fast -
i trying set values data.table in efficient way. following code want, slow large datasets:
dtcars<-as.data.table(mtcars) for(i in 1:(dim(dtcars)[1]-1)){ for(j in 1:dim(dtcars)[2]){ if(dtcars[i,j, with=f]>10){ set(dtcars, i=as.integer(i), j =as.integer(j) , value = dtcars[dim(dtcars)[1],j,with=f]) } } }
and want this... totally wrong code, expresses need , think faster. meaning want subset data.table , insert same value particular column , repeat each column.
dtcars<-as.data.table(mtcars) ns<-names(dtcars) for(j in 1:length(ns)){ dtcars[ns[j]>10]<-dtcars[20,ns[j]] }
imo set
should used sparingly, , regular :=
sufficient always:
for (col in names(dtcars)) dtcars[get(col) > 10, (col) := get(col)[.n]]
Comments
Post a Comment