【问题标题】:R return a conditioned number of objects in a FUNCTIONR 在 FUNCTION 中返回条件数量的对象
【发布时间】:2015-09-18 18:13:12
【问题描述】:

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

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

【问题讨论】:

    标签: r function return


    【解决方案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)
    

    【讨论】:

    • 非常感谢。我还有一个问题,假设我希望该函数也将列数返回到该列表中。如何将该对象添加到 empty_list?
    【解决方案2】:

    lapply 就是你要找的东西

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

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 2015-11-15
      • 1970-01-01
      相关资源
      最近更新 更多