2016-11-04 6 views
-2

Ich kann meine Daten nicht reproduzieren, damit ich sampel Daten liefern werden, die ähnlich ist:R Drehen Liste Zeichen in andere Listen

lst1 <- list(IT = c("Training", "Helpdesk"), Construction = c("Water", "Waste")) 
lst2 <- list(Training = c("Alarm Engineer", "Backend Engineer"), 
      Helpdesk = c("Analyst 1", "Analyst 2"), 
      Water = c("Water 1", "Water 2"), 
      Waste = c("Waste 1", "Waste 2", "Waste 3")) 
lst3 <- list(`Alarm Engineer` = head(mtcars), `Backend Engineer` = head(VADeaths), 
      `Analyst 1` = head(diamonds), `Analyst 2` = head(ChickWeight), 
      `Water 1` = head(state.x77), `Water 2` = head(iris), 
      `Waste 1` = head(CO2), `Waste 2` = head(cbind(letters, LETTERS)), 
      `Waste 3` = state.abb) 

First (lst1) Ich habe kleine verschachtelte Liste der Länge 35:

head(dis_sub, 2)   
$IT 
[1] "Web Developer"   "Web Designer"   "Training"    "Testing"    "Technician"   "Technical Support"  
[7] "Systems Engineer"  "Systems Analyst"  "Helpdesk"  

$Construction 

[1] "Water"      "Waste"      "Sustainability"   "Structural Engineer"  "Skilled Trades"   
[6] "Site Manager"    "Mechanical and Electrical" 

Dann habe ich eine zweite verschachtelte Liste der Länge 250 (lst2):

head(sub_jobs, 2) 
$Mechanical and Electrical 

    [1] "Alarm Engineer"   "Backend Engineer"  "Biomass Engineer"       
    [4] "Building Engineer"   "Cam Engineer"  "Electrician" 

$Helpdesk 

[1] "1st Line Analyst"     "1st Line Desktop Support Analyst" "1st Line Engineer"    "1st Line Helpdesk"    
[5] "1st Line Helpdesk Support" "1st Line IT Support" "1st Line IT 

Dann habe ich eine endgültige Liste (LST3), th alle mit einer gemeinsamen Variable Liste eine Liste von Daten-Frames, aber mit sifferent Zahl von Beobachtungen:

head(list_all, 2) 
$Electrician 
           words 
1      17th edition 
2  17th edition qualification 
3   17th edition qualified 
4       3 phase 
5      access point 

$1st Line Helpdesk Support 
             words 
1     1st line technical support 
2      2nd line support team 
3     2nd line technical support 

Jetzt haben Sie vielleicht entdeckt, dass in der ersten Liste, darunter wir Helpdesk sehen. Und im Bau sehen wir mechanische und elektrische

Ich möchte diese aus Zeichen, in die Listen in Liste zwei.

Dann von dort sehen wir in der Liste zwei unter Mechanical und Electrical wir haben Electricianand unter Helpdesk wir sehen 1st Line Helpdesk Support. Ich möchte dann, dass diese Zeichen in die data.frames in Liste 3 umgewandelt werden.

Es könnte dumm von mir gewesen sein, die Listen zu machen, die ich gemacht habe und von dort gehen. Ich kann natürlich einfache Listen von 35 und 250 machen, und ich habe auch einen Datenrahmen wie:

dis   sub  norm 
IT   Helpdesk 1st Line Helpdesk Support 
IT   Helpdesk Analyst 
IT   Testing Tester 
Construction Mech... Electrician 
Construction Mech.. Alarm Engineer 
Construction Waste  Recycling Engineer 

Und dann einen Ordner voller csv ist, die oben nach jeder Norm Reihe jeweils genannten und data.frames enthalten, die waren verwendet, um die Liste der data.frames in der Liste 3.

Was ich möchte, ist zu machen:

>List 
$IT 
    Helpdesk 
      1st Line Helpdesk Support 
        1     1st line technical support 
        2      2nd line support team 
        3     2nd line technical support 
        ... 
      Analyst 
        ... 
      ... 
    Web developer 
      ... 
        ... 
    ... 

$Construction 
      Mechanical and Electrical 
          Electrician 
            1      17th edition 
            2  17th edition qualification 
            3   17th edition qualified 
+0

Kann jemand erklären, warum diese negative Stimmen erhält? Ich dachte, ich wäre klar und habe Beispiele meiner Daten für andere zur Replikation vorgelegt. – Olivia

+0

Versuchen Sie 'lapply (dis_sub, Funktion (x) lapply (sub_jobs [x], Funktion (.x) list_all [.x]))' –

+0

Es funktioniert. Ich kann dir zeigen. –

Antwort

1

Wir nisten können eine Teilmenge.

lapply(lst1, function(x) lapply(lst2[x], function(.x) lst3[.x])) 

Daten

lst1 <- list(IT = c("Training", "Helpdesk"), Construction = c("Water", "Waste")) 
lst2 <- list(Training = c("Alarm Engineer", "Backend Engineer"), 
      Helpdesk = c("Analyst 1", "Analyst 2"), 
      Water = c("Water 1", "Water 2"), 
      Waste = c("Waste 1", "Waste 2", "Waste 3")) 
lst3 <- list(`Alarm Engineer` = head(mtcars), `Backend Engineer` = head(VADeaths), 
      `Analyst 1` = head(diamonds), `Analyst 2` = head(ChickWeight), 
      `Water 1` = head(state.x77), `Water 2` = head(iris), 
      `Waste 1` = head(CO2), `Waste 2` = head(cbind(letters, LETTERS)), 
      `Waste 3` = state.abb) 

Ausgabe

lapply(lst1, function(x) lapply(lst2[x], function(.x) lst3[.x])) 
$IT 
$IT$Training 
$IT$Training$`Alarm Engineer` 
        mpg cyl disp hp drat wt qsec vs am gear carb 
Mazda RX4   21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 
Mazda RX4 Wag  21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 
Datsun 710  22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 
Valiant   18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 

$IT$Training$`Backend Engineer` 
     Rural Male Rural Female Urban Male Urban Female 
50-54  11.7   8.7  15.4   8.4 
55-59  18.1   11.7  24.3   13.6 
60-64  26.9   20.3  37.0   19.3 
65-69  41.0   30.9  54.6   35.1 
70-74  66.0   54.3  71.1   50.0 


$IT$Helpdesk 
$IT$Helpdesk$`Analyst 1` 
# A tibble: 6 × 10 
    carat  cut color clarity depth table price  x  y  z 
    <dbl>  <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl> 
1 0.23  Ideal  E  SI2 61.5 55 326 3.95 3.98 2.43 
2 0.21 Premium  E  SI1 59.8 61 326 3.89 3.84 2.31 
3 0.23  Good  E  VS1 56.9 65 327 4.05 4.07 2.31 
4 0.29 Premium  I  VS2 62.4 58 334 4.20 4.23 2.63 
5 0.31  Good  J  SI2 63.3 58 335 4.34 4.35 2.75 
6 0.24 Very Good  J VVS2 62.8 57 336 3.94 3.96 2.48 

$IT$Helpdesk$`Analyst 2` 
    weight Time Chick Diet 
1  42 0  1 1 
2  51 2  1 1 
3  59 4  1 1 
4  64 6  1 1 
5  76 8  1 1 
6  93 10  1 1 
+0

ist .x das gleiche wie ich oder y (irgendein Dummy) oder hat es eine Beziehung zu x von der Schleife der höheren Ebene? – Olivia

+0

Es ist willkürlich und ist mit nichts anderem verbunden. Nur ein erfundener Name –

+0

auch was Teil meiner Frage ist schlecht, ich will keine negativen Stimmen und werde es bearbeiten – Olivia