【问题标题】:How to make a Loop in R referencing a data set如何在 R 中创建一个循环引用数据集
【发布时间】:2021-04-19 19:09:35
【问题描述】:

我对如何运行复杂的循环感到困惑。我希望 R 在数据集中的 14 个海龟中的每一个上运行一个函数 (rpt)(从 R3L12 开始)。下面是只为一只海龟运行函数的代码。

R3L12repodba <- rpt(odba ~ (1|date.1), grname = "date.1", data= R3L12rep, 
datatype = "Gaussian", nboot = 500, npermut = 0)

print(R3L12repodba)

问题是数据集每次都会发生变化。对于下一个海龟,海龟 R3L1,数据 = 将是 R3L1rep。

复制和粘贴上面的代码并为 13 只海龟更改它可能会更容易,但我想看看是否有人可以帮助我完成循环。

谢谢!

【问题讨论】:

  • 听起来问题是由一堆单独的变量引起的,这些变量的数据存储在变量名本身中。在 R 中,通常使用列表更好地解决这些任务以将相关数据保存在一起,这使您可以轻松地对列表中的每个元素执行操作。首先,您是如何创建所有数据对象的?
  • 所有数据都存储在一个巨大的数据集中,但我使用的功能需要将个体分开(这就是为什么我必须制作 14 个迷你数据集)。我所做的只是获取巨大的数据集并将其过滤为一只特定的海龟。这能回答你的问题吗?

标签: r dataframe loops


【解决方案1】:

您可以只创建一个包含每个数据集名称的向量。

data_names=c("R3L12rep","R3L1rep")

然后遍历每个名​​称:

for(i in seq_along(data_names)){
  foo = rpt(odba ~ (1|date.1), 
              grname = "date.1", 
              data= data_names[i], 
              datatype = "Gaussian", 
              nboot = 500, 
              npermut = 0))
  print(foo)
}

【讨论】:

  • 我这样做了,但没有用。 数据错误[no_NA_vals, ]:维度数不正确另外:警告消息:在 rptGaussian(formula, grname, data, CI, nboot, npermut, parallel, : 包含缺失值的 2 行已被删除也许我的数据有问题?
【解决方案2】:

将您的数据集放入一个列表中,然后遍历该列表:

datasets = list(R3L12rep,R3L1rep, <insert-rest-of-turtles>)
for (data in datasets) {
    R3L12repodba <- rpt(odba ~ (1|date.1), grname = "date.1", data= data, 
                        datatype = "Gaussian", nboot = 500, npermut = 0)

    print(R3L12repodba)
}

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 2022-08-24
    • 1970-01-01
    • 2018-01-14
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2021-08-26
    相关资源
    最近更新 更多