2013-02-25 2 views
-1

Печать значения data.frame внутри lapply, но вне его не сохраняет значения.Проблема с lapply

lapply(names(RFEresults), function(x) 
    { 
    feats <- extractFeatures(RFEresults[[x]]) 
    featurestat[which(featurestat[, 1]==x),rownames(feats)] <- feats$time.choosen 
    print(featurestat[1, ]) 
    }) 

print(featurestat[1, ]) 

Имеет ли запасы не сохранять значения?

+1

Что именно проблема? Каков результат, который вы получаете? Работает ли это, когда вы делаете это вручную? Обратите внимание: я предлагаю вам передать 'RFEresults' в ваш' lapply' вызов. –

+0

@ RomanLuštrik Мне нужно использовать имена для индексации. вызов функции печати корректно печатает featurestat, но тот же, что и снаружи, печатает исходный файл data.frame. featurestat инициализируется 0. – Shahzad

+0

Объекты @Shahzad, модифицированные внутри функции, изменяются в среде функций. Когда вы выходите из функции, среда не то же самое, поэтому ваши изменения теряются. Если вы предоставите воспроизводимый пример, мы сможем помочь вам с вашим кодом. – juba

ответ

1

Попробуйте это:

#assign result of the lapply loop to an object 
res <- lapply(names(RFEresults), function(x) 
    { 
    feats <- extractFeatures(RFEresults[[x]]) 
    featurestat[which(featurestat[, 1]==x),rownames(feats)] <- feats$time.choosen 
    featurestat #return value of the function 
    }) 

#now you have the results of each iteration in a list 
#and can access them using 
print(res[[1]]) 
print(res[[2]]) 
#... 
0

Я не знаю, если это кошерно, но это должно работать:

lapply(names(RFEresults), function(x) 
{ 
    feats <- extractFeatures(RFEresults[[x]]) 
    featurestat[which(featurestat[, 1]==x),rownames(feats)] <<- feats$time.choosen 
    print(featurestat[1, ]) 
}) 
Смежные вопросы