2014-12-09 2 views
-2

Я пытаюсь использовать ls и rbind_all для объединения нескольких data.frames по строкам. Вот мой код:Использование ls и rbind_all для объединения нескольких фреймов данных

pc.files <- ls(pattern="*_pc") #look for all files with "_pc" at end 
all.pc <- rbind_all(list(pc.files)) #rbind them 

но!

Error: object at index 1 not a data.frame 

Это потому, что pc.files является символом вектора? Все массивы * _pc являются data.frame. Я не могу понять, почему это не работает ..

благодаря

+1

Вы должны использовать 'mget' использовать фактические кадры данных, а не их * имена * (вектор символов, как вы сказали), содержащиеся в 'pc.files'. – konvas

+3

@mark Я бы прочитал все файлы в списке, а не создавал несколько data.frames. Например. Если файлы заканчиваются на '_pc1.txt',' _pc2.txt', 'library (data.table); rbindlist (lapply (list.files (pattern = '^ _pc \\ d +'), fread)) ' – akrun

+0

hi @akrun, используя' rbindlist (lapply (list.files (pattern = '^ _ pc \\ d +'), fread)) 'возвращает 0 obs 0 переменных df. Я проверил, что шаблон regex работает – mark

ответ

2

Попробуйте использовать mget:

all.pc <- rbind_all(mget(pc.files)) 
+0

Привет, спасибо за комментарии. Попытка 'all.pc <- rbind_list (mget (pc.files))' возвращает 0 obs 0 переменных df. pc.files - символ '> pc.files [1]" al.csv "" br.csv "" cm.csv "" cr.csv "" da.csv "" e.csv "" ec.csv "" ru.csv "" gu.csv "" ha.csv " [11]" hp.csv "" ig.csv "" kt.csv "" me.csv "" n.csv "" nw.csv "" rg .csv "" rh.csv "" rm.csv "" se.csv " [21]" sg.csv "" sl.csv "" sm.csv "" ss.csv "" sw.csv "" tn. csv "" tw.csv "" ub.csv "" w.csv "" wc.csv " [31]" wd.csv "' (на самом деле мои файлы завершаются .csv, но они являются dfs) ​​ – mark

+0

@mark Вы уверены есть некоторые данные в переменных? – James

+0

Да, они содержат данные '> head (br.csv) BR1.1AB X10 N X10.1 X10.2 X10.3 X0 X0.1 X1 X0.2 X540260 X169398 E92000001 E19000003 E18000007 X 1 BR1 1AD 50 N 1 0 0 1 0 0 1 540227 169300 E92000001 E19000003 E18000007 ... 'but'> all.pc <- rbind_all (mget (c ("al.csv", "br.csv"))) 'DOES дает df обоих" al.csv "и" br.csv " – mark