我如何用lapply重写此for循环

时间:2019-09-13 15:34:51

标签: r for-loop lapply

我正在尝试用lapply替换R中的for循环。

Table <- c("Filepath1","Filepath2")
Conditions c<- c("Yes","No")

for (i in 1:length(Table)){

Df[[i]] <- readxl::read_xlsx(Table[i])
Df[[i]]$Condition <- Conditions[i]

}

因此,这将获取Table中的第一个元素,将其读入R,然后将一个列添加到与Condition中第一个元素相对应的表中。

使用lapply我可以通过以下方式添加表格:

lapply(Table, readxl::read_xlsx)

我可以说:

Df[[1]]$Conditions <- Conditions[1]
Df[[2]]$Conditions <- Conditions[2]

但是如何在不使用for循环的情况下添加此额外的列?

1 个答案:

答案 0 :(得分:2)

您可以使用mapply遍历两个对象(表和条件)。未经测试:

mapply(FUN = function(tbl, cnd) {
  out <- readxl::read_excel(tbl)
  out$Condition <- cnd
  out
}, tbl = Table, cnd = Conditions)