Я работаю с десяти учебных наборов данных, train1 через train10, и хотел бы повторить следующие утверждения для 1 до 10 с помощью одного блока кода:Объединяя несколько аргументов функции внутри list2serv (lapply(),)
train_y_1 <- c(train1$y)
train1$y <-NULL
train_x_1 <- data.matrix(train1)
olsfit_1 <- cv.glmnet(y=train_y_1, x=train_x_1, alpha=1, family="gaussian")
Я читал на форумах, что lapply() предпочтительнее для циклов. Мой код:
# Create empty data frames and list (to be populated with values in main program)
list2env(setNames(lapply(1:10, function(i) data.frame()), paste0('train_y_', 1:10)), envir=.GlobalEnv)
list2env(setNames(lapply(1:10, function(i) data.frame()), paste0('train_x_', 1:10)), envir=.GlobalEnv)
list2env(setNames(lapply(1:10, function(i) list()), paste0('lasso_', 1:10)), envir=.GlobalEnv)
# Create y and x input matrices and run ten lasso regressions
list2env(lapply(mget(paste0('train', 1:10)), mget(paste0('train_y_', 1:10)), mget(paste0('train_x_', 1:10)), mget(paste0('lasso_', 1:10)),
function(a,b,c,d)
{
b <- c(a$y);
a$y <- NULL;
c <- data.matrix(a);
d <- cv.glmnet(y=b, x=c, alpha=1, family="gaussian");
}), envir=.GlobalEnv)
, который выдает сообщение об ошибке:
Error in match.fun(FUN) :
'mget(paste0("train_y_", 1:10))' is not a function, character or symbol
Так выглядит R смущает четыре MGET() функция, которые я, предназначенной для чтения значений для а, б , c, d аргументы, но я не уверен, как действовать дальше.
Любые предложения?
Отлично, спасибо. Я добавил «train <- lapply (1:10, function (x) {paste0 (« поезд », x)}) для списка train1-train10. Я получаю сообщение об ошибке: «Ошибка в операторе $ y: $ недопустима для атомных векторов» при запуске кода – RobertF
@RobertF 'train' должен быть списком ваших фактических наборов учебных материалов, если я читаю это право , Итак, если у вас есть все они в вашей глобальной среде, я думаю, что-то вроде «train <- mget (paste0 (« train », 1:10)) – jenesaisquoi
Гораздо лучше, спасибо! Кажется, что программа работает нормально, хотя она не сохраняет выходные кадры данных для b, c и d. – RobertF