2015-05-01 2 views
-1

Мой вопрос является продолжением следующего вопроса. (Не могли бы прокомментировать эту нить из-за репутационных ограничений)Упрощение извлечения списка фреймов данных

Print the Nth Row in a List of Data Frames

Я хочу, чтобы результаты были напечатаны в виде кадра данных, а не в виде списка (предполагая, что я несколько столбцов, а не один столбец, как в примере). Может ли кто-нибудь сказать мне, что мне нужно сделать, чтобы получить этот результат?

список ввода пробы

$AK 
        HospitalName State HeartAttack HeartFailure Pneumonia 
    99 PROVIDENCE ALASKA MEDICAL CENTER AK  13.4   12.4  10.5 
    103   ALASKA REGIONAL HOSPITAL AK  14.5   13.4  12.5 
    102  FAIRBANKS MEMORIAL HOSPITAL AK  15.5   15.6  13.4 
    106  ALASKA NATIVE MEDICAL CENTER AK  15.7   11.6  15.5 
    100 MAT-SU REGIONAL MEDICAL CENTER AK  17.7   11.4  12.1 

    $AL 
            HospitalName State HeartAttack HeartFailure Pneumonia 
    78      CRESTWOOD MEDICAL CENTER AL  13.3   13.8  10.4 
    85      BAPTIST MEDICAL CENTER EAST AL  14.2   9.6  10.2 
    1     SOUTHEAST ALABAMA MEDICAL CENTER AL  14.3   11.4  10.9 
    31        GEORGIANA HOSPITAL AL  14.5   10.8  11.3 
    65      PRATTVILLE BAPTIST HOSPITAL AL  14.6   14.8  14.2 
    60         THOMAS HOSPITAL AL  14.7   12.8  13.1 
    71   VAUGHAN REG MED CENTER PARKWAY CAMPUS AL  14.7   12.0  14.0 

Ожидаемый результат выборки (предположим, Num = 4, т.е. извлечение 4-й строке каждого dataframe)

HospitalName State HeartAttack HeartFailure Pneumonia 
    106  ALASKA NATIVE MEDICAL CENTER AK  15.7   11.6  15.5 
    65      PRATTVILLE BAPTIST HOSPITAL AL  14.6   14.8  14.2 

lapply код, который я использовал это printtab < -lapply (finaltab, '[', num ,, drop = FALSE)

finaltab - это список файлов данных, в которых каждый файл данных содержит 5 столбцов, num используется для извлечения 1 определенной строки из каждого dataframe, printtab список вывода

вещи я попытался:

  1. Добавление упрощать = TRUE в lapply: Это дает ошибку
  2. Использование sapply в printtab < -sapply (finaltab, '[', num ,, drop = FALSE): говорит, что аргумент отсутствует, без значения по умолчанию. Пробовал без капли как хорошо.
  3. Использование as.data.frame(): Его делать то, что я не понимаю,

    AK.HospitalName AK.State AK.HeartAttack AK.HeartFailure AK.Pneumonia    AL.HospitalName AL.State 
    NA   <NA>  <NA>   <NA>   <NA>   <NA> D W MCMILLAN MEMORIAL HOSPITAL  AL 
        AL.HeartAttack AL.HeartFailure AL.Pneumonia     AR.HospitalName AR.State AR.HeartAttack AR.HeartFailure 
    NA   15.7   14.8   12.6 ARKANSAS METHODIST MEDICAL CENTER  AR   17.1   14.4 
        AR.Pneumonia      AZ.HospitalName AZ.State AZ.HeartAttack AZ.HeartFailure AZ.Pneumonia 
    NA   11.7 JOHN C LINCOLN DEER VALLEY HOSPITAL  AZ   14.9   11.9   10.0 
         CA.HospitalName CA.State CA.HeartAttack CA.HeartFailure CA.Pneumonia   CO.HospitalName CO.State 
    NA SHERMAN OAKS HOSPITAL  CA   13.3    9.7   9.3 SKY RIDGE MEDICAL CENTER  CO 
        CO.HeartAttack CO.HeartFailure CO.Pneumonia   CT.HospitalName CT.State CT.HeartAttack CT.HeartFailure CT.Pneumonia 
    NA   15.0    9.9   10.5 MIDSTATE MEDICAL CENTER  CT   15.6   12.1   11.4 
        DC.HospitalName DC.State DC.HeartAttack DC.HeartFailure DC.Pneumonia DE.HospitalName DE.State DE.HeartAttack 
    NA   <NA>  <NA>   <NA>   <NA>   <NA>   <NA>  <NA>   <NA> 
        DE.HeartFailure DE.Pneumonia    FL.HospitalName FL.State FL.HeartAttack FL.HeartFailure FL.Pneumonia 
    

EDIT:

Пример вывода для dput (голова (finaltab))

structure(list(AK = structure(list(HospitalName = c("PROVIDENCE ALASKA MEDICAL CENTER", 
"ALASKA REGIONAL HOSPITAL", "FAIRBANKS MEMORIAL HOSPITAL", "ALASKA NATIVE MEDICAL CENTER", 
"MAT-SU REGIONAL MEDICAL CENTER"), State = c("AK", "AK", "AK", 
"AK", "AK"), HeartAttack = c("13.4", "14.5", "15.5", "15.7", 
"17.7"), HeartFailure = c("12.4", "13.4", "15.6", "11.6", "11.4" 
), Pneumonia = c("10.5", "12.5", "13.4", "15.5", "12.1")), .Names = c("HospitalName", 
"State", "HeartAttack", "HeartFailure", "Pneumonia"), row.names = c(99L, 
103L, 102L, 106L, 100L), class = "data.frame"), AL = structure(list(
    HospitalName = c("CRESTWOOD MEDICAL CENTER", "BAPTIST MEDICAL CENTER EAST", 
    "SOUTHEAST ALABAMA MEDICAL CENTER", "GEORGIANA HOSPITAL", 

Выход для rbind on lapply

AK  AL  AR  AZ  CA  CO  CT  DC  DE  FL  GA  GU  HI  IA  ID  IL  IN  
[1,] List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 
    KS  KY  LA  MA  MD  ME  MI  MN  MO  MS  MT  NC  ND  NE  NH  NJ  NM  
[1,] List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 
    NV  NY  OH  OK  OR  PA  PR  RI  SC  SD  TN  TX  UT  VA  VI  VT  WA  
[1,] List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 List,5 
    WI  WV  WY  
[1,] List,5 List,5 List,5 
+0

Это поможет, если вы предоставили воспроизводимый вход и выход .. требуемый . и включил вопрос (с «?») – Frank

+0

Не могли бы вы внести в свой вопрос вывод 'dput (head (finaltab))'? –

+0

@ Frank- Добавлен воспроизводимый вход и образец желаемого выхода. – Meeshu

ответ

0

df.meeshu имеет выход dput. В вашем коде ничего не было о преобразовании файла csv, который у вас был с выходом dput. Я просто использовал dput. использовать свой собственный dataframe, который finaltab вместо df.meeshu

df.list.select <-lapply(df.meeshu, function(x) x[4,]) 
df.select <-do.call("rbind", df.list.select) 
head(df.select) 

вы также можете использовать plyr, что может быть быстрее

library(plyr) 
rbind.fill(df.list.select) 
+0

Несомненно, это дублированный вопрос и ответ. –

+0

@ infominer- Спасибо, я попробовал plyr, и он работает :) Нашел еще несколько методов! – Meeshu

+0

@BondedDust, yup! решил просто ответить на него! Должен был искать, прежде чем предпринимать усилия. – infominer

Смежные вопросы