【问题标题】:Assign to object in for loop with iterator as part of the object name将迭代器作为对象名称的一部分分配给 for 循环中的对象
【发布时间】:2013-11-11 18:32:11
【问题描述】:

我有一个数据框 COG 代表具有几个不同条件的实验。对于几个计算,我想将此数据帧子集化为与条件m一样多的子集,并且我希望子集名称类似于COG.ii 是条件。

for (i in unique(COG$cond)) {
 ??? <- subset(COG, COG$cond == i)
}

我需要用什么来代替 ??? ?不是COG.i,也绝对不是paste0("COG.", i)

(我意识到人们也可以注意“整理”数据或在不同条件下使用虚拟代码,但除了统计数据之外,我首先希望更好地掌握 R。)

感谢您的帮助!

【问题讨论】:

  • 尝试split(COG, COG$cond) 得到一个由多个数据帧组成的列表,这些数据帧构成了原始数据帧的一个分区。
  • 也许看到?assign?类似于assign(paste0("COG.", i), subset(...))
  • 谢谢@alexis_laz,这行得通。可能不如 Blue Magister 的解决方案优雅,但这正是我所寻找的。​​span>

标签: r


【解决方案1】:

列表就是为了这个目的而存在的。不要有多个变量,而是将结果放在一个列表中。

按照 cmets 中的建议,您应该使用 split 将数据集拆分为不同的子集。

COG.split <- split(COG, COG$cond)

然后您可以使用[[ ]] 运算符访问不同的子集,或使用*apply 系列函数对各种子集执行操作。

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2013-10-15
    • 2021-11-12
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    相关资源
    最近更新 更多