1

チャンクに分割した大きなデータを扱っているので、RAMで管理できます。たとえば、次のようになります(これはチャンクが多い例です)

var_1<-all_modell [c(1:150000)     ,]; save(var_1,file="~/var_1.Rdata");rm(var_1);
var_2<-all_modell [c(150001:300000),]; save(var_2,file="~/var_2.Rdata");rm(var_2);
var_3<-all_modell [c(300001:450000),]; save(var_3,file="~/var_3.Rdata");rm(var_3);

アイデアは、各反復でチャンクがロードされ、予測に使用されてから消去されるため、RAMは次のチャンクを自由に処理できるということです。

for (i in 1:n_chunks)
{
name<-sprintf('var_%i',i); path<-sprintf('~/var_%i.Rdata',i)
load(path)
predicted     <- predict(Model, newdata =name, type = "prob") #here is the problem
value         <- as.numeric(lapply(predicted,"[[",2))
namef         <- sprintf('~/predicted%i.Rdata',i)
save(value,file=namef)
rm(list= ls()[!(ls()%in% Model)])
}

私が知りたいのはnewdata=name、名前が異なる場所をどのように渡すことができるかです...私もこれを試しましたが、うまくいきませんでした:

predicted <- predict(Model, parse(text=sprintf(sprintf('newdata=var_%i',i))), type="prob")

4

2 に答える 2

1

これを行うために使用get()します。最小限の例を次に示します。

x <- 1:100

x_1 <- x[1:50]
x_2 <- x[51:100]

for(i in 1:2){
  var <- sprintf('x_%i',i)
  print(sum(get(var)))
}

これにより、次の結果が得られます。

[1] 1275
[1] 3775

詳細については、を参照?getしてください。

于 2013-03-08T08:54:45.213 に答える