【问题标题】:argument "nm" is missing error while gathering data frames into a list by name将数据帧按名称收集到列表中时,参数“nm”丢失错误
【发布时间】:2020-11-20 16:39:49
【问题描述】:

我尝试使用Put multiple data frames into list (smart way) 中给出的建议,但继续收到以下错误:

argument "nm" is missing, with no default

我不确定为什么会这样。我尝试搜索错误但找不到任何内容(Create a list with named values by applying a function to each row of a data frame 在评论中显示此错误但没有解释)。

我有以下data.frames(这里的数据无关紧要):

#create data.frames
p1sfdf1=data.frame(a=(1:10),b=(2:11),c=(3:12))
p2sfdf1=data.frame(a=(1:10),b=(2:11),c=(3:12))
p1sfdf2=data.frame(a=(1:10),b=(2:11),c=(3:12))
p2sfdf2=data.frame(a=(1:10),b=(2:11),c=(3:12))
p1sfdf3=data.frame(a=(1:10),b=(2:11),c=(3:12))
p2sfdf3=data.frame(a=(1:10),b=(2:11),c=(3:12))
p1sfdf4=data.frame(a=(1:10),b=(2:11),c=(3:12))
#note no p2sfdf4 here
p1sfdf5=data.frame(a=(1:10),b=(2:11),c=(3:12))
p2sfdf5=data.frame(a=(1:10),b=(2:11),c=(3:12))

#combine data.frames into a list of data.frames
l.sf=setNames(lapply(ls(pattern="p[1-2]+"),function(x) get(x)))
                     

我想将 data.frames 分组到 data.frames 列表中。我尝试根据模式“p”进行分组,然后是 1 或 2,但我不确定如何在模式中展示这一点。我猜这就是我的错误的来源,但我不确定如何解决它。

【问题讨论】:

  • 您可以使用mget 创建一个列表:mget(ls(pattern = "^p\\dsfdf\\d$")) 不确定您所说的“分组 data.frames”是什么意思 - 您可以发布预期的输出吗?
  • 看起来需要一个以p1 开头的对象列表,而另一个以p2 开头的对象列表最终将所有列表加入一个列表中。

标签: r list dataframe lapply


【解决方案1】:

我们可以简单地得到一个named listmget

lst1 <- mget(ls(pattern = "^p[1-2]+")

【讨论】:

    【解决方案2】:

    您没有将任何名称传递给setNames

    l.sf <- lapply(ls(pattern="p[1-2]+") ,function(x) get(x))
    l.sf <- setNames(l.sf, ls(pattern="p[1-2]+"))
    
    str(l.sf)
    #> List of 9
    #>  $ p1sfdf1:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    #>  $ p1sfdf2:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    #>  $ p1sfdf3:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    #>  $ p1sfdf4:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    #>  $ p1sfdf5:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    #>  $ p2sfdf1:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    #>  $ p2sfdf2:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    #>  $ p2sfdf3:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    #>  $ p2sfdf5:'data.frame': 10 obs. of  3 variables:
    #>   ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
    #>   ..$ b: int [1:10] 2 3 4 5 6 7 8 9 10 11
    #>   ..$ c: int [1:10] 3 4 5 6 7 8 9 10 11 12
    

    reprex package (v0.3.0) 于 2020 年 7 月 30 日创建

    【讨论】:

      猜你喜欢
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 2014-03-13
      相关资源
      最近更新 更多