2017-09-16 10 views
0

저는 이것을 알아 내려고 약간의 문제가 있습니다.mapply()를 사용하여 목록에서 특정 데이터 프레임의 특정 열을 추출하는 방법?

I 3 dataframes 목록을 가지고

I가리스트 돌아 mapply를 사용해야
list_of_dataframes = list(iris, trees, mtcars) 

:

  • 제 소자 list_of_dataframe의 제 dataframe의 첫 번째 열이다

  • 두 번째 요소는 list_of_dataframe의 두 번째 데이터 프레임의 두 번째 열

  • 세 번째 요소는 원자 벡터를 반환하려면

답변

2

, 그것은

mapply("[", list_of_dataframe, 1:3) 

것 list_of_dataframe의 세 번째 dataframe의 세 번째 열입니다 그러나 당신이 원하는 경우 하나의 컬럼 데이터 프레임 반환 , 당신은

Map("[", list_of_dataframe, 1:3) 

을하거나 mapply()SIMPLIFY = FALSE을 사용할 수 있습니다 . 그리고 subset()을 사용할 수도 있습니다.

mapply(subset, list_of_dataframe, select = 1:3) 
2

는 또한 데이터합니다 (.x 인수에) 프레임합니다 (.y 인수)에 열 1:3의 색인 목록을 통해 루프로 purrr 패키지에서 map2 함수를 사용할 수있다.

list_of_dataframes <- list(iris, trees, mtcars) 

library(purrr) 

map2(list_of_dataframes, 1:3, ~.x[, .y]) 
[[1]] 
    [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4 5.1 5.7 5.1 
[21] 5.4 5.1 4.6 5.1 4.8 5.0 5.0 5.2 5.2 4.7 4.8 5.4 5.2 5.5 4.9 5.0 5.5 4.9 4.4 5.1 
[41] 5.0 4.5 4.4 5.0 5.1 4.8 5.1 4.6 5.3 5.0 7.0 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 
[61] 5.0 5.9 6.0 6.1 5.6 6.7 5.6 5.8 6.2 5.6 5.9 6.1 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 
[81] 5.5 5.5 5.8 6.0 5.4 6.0 6.7 6.3 5.6 5.5 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7 
[101] 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7 6.0 
[121] 6.9 5.6 7.7 6.3 6.7 7.2 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3 6.1 7.7 6.3 6.4 6.0 6.9 
[141] 6.7 6.9 5.8 6.8 6.7 6.7 6.3 6.5 6.2 5.9 

[[2]] 
[1] 70 65 63 72 81 83 66 75 80 75 79 76 76 69 75 74 85 86 71 64 78 80 74 72 77 81 82 
[28] 80 80 80 87 

[[3]] 
[1] 160.0 160.0 108.0 258.0 360.0 225.0 360.0 146.7 140.8 167.6 167.6 275.8 275.8 
[14] 275.8 472.0 460.0 440.0 78.7 75.7 71.1 120.1 318.0 304.0 350.0 400.0 79.0 
[27] 120.3 95.1 351.0 145.0 301.0 121.0 
+0

또는 ... 전용의 경우에는 magrittr의 ~ extract2 (.x, .y)가 있습니다. – Frank

+1

@Frank'~ extract2 (.x, .y)'를 사용 해주셔서 감사합니다. – www