【问题标题】:Drop a data.frame from a list of data.frames based on names in R根据 R 中的名称从 data.frames 列表中删除 data.frame
【发布时间】:2020-02-04 06:42:12
【问题描述】:

我有一个 data.frames 列表。我想知道如何删除此列表中名称为以下任何一种的 data.frames:c("out", "Name")

我尝试了r[names(r) != c("out", "Name")],但没有成功。

r <- list(
     data.frame(Name = rep("Jacob", 6), 
               X = c(2,2,1,1,NA, NA), 
               Y = c(1,1,1,2,1,NA), 
               Z = rep(3, 6), 
             out = rep(1, 6)), 

 data.frame(Name = rep("Jon", 6), 
               X = c(1,NA,3,1,NA,NA), 
               Y = c(1,1,1,2,NA,NA), 
               Z = rep(2, 6), 
             out = rep(1, 6)), 

  data.frame(Name = rep("Jon", 6), 
                X = c(1,NA,3,1,NA,NA), 
                Y = c(1,1,1,2,2,NA), 
                Z = rep(2, 6), 
              out = rep(2, 6)), 

  data.frame(Name = rep("Jim", 6), 
                X = c(1,NA,3,1,NA,NA), 
                Y = c(1,1,1,2,2,NA), 
                Z = rep(2, 6), 
              out = rep(1, 6)))

【问题讨论】:

  • 不确定规范副本是什么,但类似 ​​stackoverflow.com/questions/25647470/… 的东西看起来很相似或 stackoverflow.com/questions/9665984/…
  • 不是骗子。也彻底改变了数据。这根本与向量无关。
  • 由于问题已发生重大变化,您可能需要编辑标题和介绍部分 - 听起来您没有从列表中删除 data.frame,而是从 data.frames 中删除列在一个列表中。

标签: r list function loops dataframe


【解决方案1】:

我们可以使用%in%

r[!names(r) %in% c("out", "Name")]

随着更新的数据

lapply(r, function(x) x[setdiff(names(x), c("out", "Name"))])

【讨论】:

  • @rnorouzian 因为list没有命名
  • @rnorouzian 在更新的r 中,所有list 元素都是data.frame 并具有“out”或“Name”列。我猜您想对列进行子集化或删除 liist 元素本身(如果有匹配项)。在那种情况下,不会有任何
  • @rnorouzian 好的,如果你能用预期的输出更新你的帖子,那就太好了
  • @rnorouzian 按照你的描述delete data.frames in this list whose names are any of the following,所有的data.frame都有这两个名字,所以全部删除?
  • @rnorouzian 你可以查看i1 &lt;- !sapply(r, function(x) any(c("out", "Name") %in% names(x))); r[i1]
【解决方案2】:

试试这个:

r[names(r)!='out'][names(r[names(r)!='out'])!='Name']

【讨论】:

    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2020-09-17
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    相关资源
    最近更新 更多