按名称将数据帧收集到列表中时,参数 "nm" 丢失错误

argument "nm" is missing error while gathering data frames into a list by name

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

argument "nm" is missing, with no default

我不确定为什么会这样。我尝试搜索错误但找不到任何内容( 在评论中显示此错误但没有解释)。

我有以下 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,但我不确定如何在模式中证明这一点。我猜这就是我的错误来源,但我不确定如何解决它。

您没有将任何名称传递给 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-07-30 创建

我们可以简单地得到 named listmget

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