2015-07-01 2 views
0

У меня есть функция, в которой я хочу вернуть другой объект за столбец матрицы. Однако я не знаю, как сделать возврат таким образом, чтобы он определял, сколько переменных нужно создавать в списке, учитывая, что оно будет обусловлено количеством столбцов входной матрицы. Другими словами, как я могу изменить последнюю команду в следующей функции:R возвращает условное число объектов в FUNCTION

f <- function(Treat) { 
for (i in c(1:ncol(Treat))) { 
assign(paste0("Treat",i), as.matrix(Treat[,i])) 
} 
return(dat = list(Treat1=Treat1 , Treat2=Treat2, .....Treatn=Treatn)) 
} 

ответ

3

lapply является то, что вы ищете

f <- function(Treat){ 
    lapply(1:ncol(Treat), function(i) as.matrix(Treat[,i])) 
} 
1

lappy прекрасно работает здесь. Но вы также можете сделать это с явной петли (как на оригинальном примере), который назначает в список (предварительно инициализирован), как она идет:

empty_list <- list()       # inititalise an empty list 
f <- function(Treat, empty_list) {   # set up the function 
for (i in c(1:ncol(Treat))) {     # set up the loop 
    empty_list[[i]] <- as.matrix(Treat[,i])) # write each column to a new element 
} 
return(empty_list)       # return the list 
} 

Вы могли бы использовать это с:

full_list <- f(Treat, empty_list) 
+0

Большое спасибо. У меня есть другой вопрос, предположим, что я хочу, чтобы функция также возвращала количество столбцов в этот список. Как добавить этот объект в пустой_list? – user2246905

Смежные вопросы