【问题标题】:how to loop lapply function in R如何在R中循环lapply函数
【发布时间】:2021-02-16 17:20:55
【问题描述】:

我有两个大列表,

  1. imputemodel 包含 1000 个列表,每个列表包含 11 个公式(每个特征 1 个)
  2. 训练有 1000 个数据帧,每个数据帧 11 列

我想使用 imputemodel 中每个列表的公式在每个数据帧上应用 rpart 函数。我如何循环这 1000 次而不必像下面这样写每一行?

 list1=list(lapply(imputemodel[[1]],rpart,data=train[[1]]))
 list2=list(lapply(imputemodel[[2]],rpart,data=train[[2]]))
 list3=list(lapply(imputemodel[[3]],rpart,data=train[[3]]))

 ...

 list1000 = ...

 combined list <- c(list1, list2, list3, ...., list1000)

【问题讨论】:

    标签: r function simulation lapply rpart


    【解决方案1】:

    尝试使用Map

    combined_list <- Map(rpart, imputemodel, data = train)
    

    使用lapply,您可以迭代索引和子集模型和数据。

    combined_list <- lapply(seq_along(imputemodel), function(i) 
                            rpart(imputemodel[[i]], train[[i]]))
    

    【讨论】:

    • 我试过了,我得到了一个错误:formula.default(object, env = baseenv()) 中的错误:公式无效
    • rpart 需要一个公式对象,我猜你在 imputemodel 中有模型。这真的对你有用吗? list1=lapply(imputemodel[[1]],rpart,data=train[[1]])
    • 我的错,估算模型列表有公式。我已经编辑了问题
    • 你可以试试combined_list &lt;- Map(function(x, y) Map(rpart, x, y), imputemodel, train)。您确定要仅在一列上应用rpart 函数吗?
    • @lypnesum 你试过combined_list &lt;- Map(function(x, y) Map(rpart, x, y), imputemodel, train) 吗?它返回什么?
    猜你喜欢
    • 2015-10-12
    • 2015-10-11
    • 1970-01-01
    • 2021-05-30
    • 2011-04-10
    • 1970-01-01
    • 2020-09-20
    • 2018-01-15
    相关资源
    最近更新 更多