【问题标题】:Assign data frame name to list elements using name vector使用名称向量将数据框名称分配给列表元素
【发布时间】:2014-11-03 21:07:33
【问题描述】:

我有一个数据框,“mydata”:

head(mydata)

ID      MDC
000001  21A
000002  5
000003  8
...

我已将我的数据框按其中一个列值(即“MDC”)拆分。这创建了一个列表,按列值“MDC”细分为更多列表:

mylist <- split(mydata, mydata$MDC, drop=TRUE)
summary(mylist)

    Length Class      Mode
0   75     data.frame list
1   75     data.frame list
10  75     data.frame list
11  75     data.frame list
12  75     data.frame list
21A 75     data.frame list
...

我现在想为每个 MDC 创建一个具有相应名称的数据框,例如'MDC1'。 如何将 MDC 值分配给列表元素?

谢谢

【问题讨论】:

    标签: r assign data-management


    【解决方案1】:

    看来这应该可行

    MDC <- paste0("MDC", sort(unique(mydata$MDC)))
    names(mylist) <- MDC
    list2env(mylist, .GlobalEnv)
    ls() # Checking environment
    ## [1] "MDC"    "MDC21A" "MDC5"   "MDC8"   "mydata" "mylist"
    

    编辑: 根据@flodel 的评论-如果您想对这些数据框进行进一步操作,则不应将它们复制到全局环境中。您应该将它们留在mylist 中并使用lapplyrapply 等函数对该列表执行所有操作

    【讨论】:

    • 我在赞成或反对之间左右为难。如果您了解为什么这是一种不好的做法以及更好的做法,请详细说明,您一定会得到我的支持。
    • @flodel,如果您认为这是一种不好的做法,我一定会删除它。从您对问题的评论中,我看不出它与 OP 已经做的有什么不同
    • @DavidArenburg,这正是我想要的。谢谢!
    • @flodel,如果我弄错了,请纠正我,但您的代码正是我在问题中发布的内容。我想要的是 27 个数据帧,分别命名为“MDC1”、“MDC2”等。
    • 这是不好的做法,因为 1) 您通过 .GlobalEnv 的解决方案不是很便携,并且 2) 在 99% 的情况下,data.frames 列表(通过 split(mydata, mydata$MDC))是更好的选择。接下来你知道,OP 将发布一个问题,询问如何处理他的每个 MDC* 对象。有人会建议他使用getmgeteval(parse(text=...))...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多