R在FUNCTION中返回条件数量的对象

时间:2015-07-01 14:14:12

标签: r function return

我有一个函数,我想在矩阵的每列中返回一个不同的对象。但是,我不知道如何进行返回,以便识别在列表中创建的变量数量,因为它将以输入矩阵的列数为条件。换句话说,如何更改以下函数中的最后一个命令:

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))
}

2 个答案:

答案 0 :(得分:3)

lapply正是您要找的

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

答案 1 :(得分: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)