我正在尝试使用rbindlist调用组合一堆data.frames(它们都具有完全相同的结构)。
我的所有data.frames都有相同的命名约定“WUP_”,后跟国家/地区名称。因此,我使用下面的调用首先列出我的环境中以“WUP”开头的所有data.frames,然后应用rbindlistas:
wlist <- rbindlist(list(ls(pattern="WUP*")))
但是,我收到以下错误:
Error in rbindlist(list(ls(pattern = "WUP*"))) :
Item 1 of list input is not a data.frame, data.table or list
列表本身看起来像这样 - 所以我这部分工作:
list(c("WUP_Angola", "WUP_Botswana", "WUP_Burundi", "WUP_Comoros",
"WUP_Eritrea", "WUP_Ethiopia", "WUP_Kenya", "WUP_Lesotho", "WUP_Madagascar",
"WUP_Malawi", "WUP_Mayotte", "WUP_Mozambique", "WUP_Namibia",
"WUP_Rwanda", "WUP_Seychelles", "WUP_Somalia", "WUP_South.Africa",
"WUP_South.Sudan", "WUP_Swaziland", "WUP_Uganda", "WUP_United.Republic.of.Tanzania",
"WUP_Zambia", "WUP_Zimbabwe"))
我已经检查了环境中对象的结构,它们是data.frames,例如
str(WUP_Angola)
'data.frame': 48 obs. of 23 variables:
$ Location: Factor w/ 1 level "Angola": 1 1 1 1 1 1 1 1 1 1 ...
$ Year : int 1980 1985 1990 1995 2000 2005 2010 2015 1980 1985 ...
$ Sex : Factor w/ 2 levels "Female","Male": 1 1 1 1 1 1 1 1 1 1 ...
$ Area : Factor w/ 3 levels "Rural","Total",..: 1 1 1 1 1 1 1 1 2 2 ...
$ X.0.4. : int 567 628 654 679 707 757 795 788 746 896 ...
$ X.5.9. : int 426 476 496 526 550 589 637 678 563 682 ...
$ X.10.14.: int 345 366 378 392 409 452 482 523 472 552 ...
$ X.15.19.: int 295 314 312 327 340 381 403 432 403 472 ...
$ X.20.24.: int 248 271 272 275 291 321 345 367 336 401 ...
$ X.25.29.: int 210 231 239 247 253 275 296 321 277 332 ...
$ X.30.34.: int 163 192 201 212 218 225 244 266 213 272 ...
$ X.35.39.: int 143 149 167 178 188 191 199 219 184 208 ...
$ X.40.44.: int 125 131 131 150 161 165 171 180 158 179 ...
$ X.45.49.: int 107 114 114 117 135 138 146 152 134 153 ...
$ X.50.54.: int 90 96 97 99 101 111 118 126 113 128 ...
$ X.55.59.: int 75 80 80 83 85 83 95 103 93 106 ...
$ X.60.64.: int 58 62 63 65 67 66 68 79 73 83 ...
$ X.65.69.: int 43 46 47 49 51 51 52 54 53 61 ...
$ X.70.74.: int 28 30 31 33 35 34 36 38 34 40 ...
$ X.75.79.: int 15 17 17 18 20 20 21 23 18 22 ...
$ X.80.. : int 8 9 10 11 12 12 14 15 10 12 ...
$ Total : int 2945 3214 3311 3461 3622 3868 4123 4366 3881 4599 ...
$ X : logi NA NA NA NA NA NA ...
知道我在这里做错了什么吗?
答案 0 :(得分:4)
rbindlist获取对象列表(例如数据框)。您正在给出一个名单。 而是尝试:
wlist <- rbindlist(mget(ls(pattern="WUP*")))
mget()将按名称从环境中获取对象。
更正了实施评论。
答案 1 :(得分:1)
wlist <- rbindlist((mget(ls(pattern="WUP*"))))