Как сделать список из фрейма данных с первым столбцом в качестве ссылки? - PullRequest
0 голосов
/ 26 апреля 2019

Я все еще изучаю R. Я хотел знать, как составить список столбцов с первым столбцом в качестве ссылки. Используя mtcars в качестве примера:

head(mtcars)
                   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

Я хотел бы иметь

$cyl
                   mpg cyl 
Mazda RX4         21.0   6  
Mazda RX4 Wag     21.0   6  
Datsun 710        22.8   4  
Hornet 4 Drive    21.4   6  
Hornet Sportabout 18.7   8  
Valiant           18.1   6  

$disp
                   mpg disp 
Mazda RX4         21.0  160 
Mazda RX4 Wag     21.0  160 
Datsun 710        22.8  108 
Hornet 4 Drive    21.4  258 
Hornet Sportabout 18.7  360 
Valiant           18.1  225 
...

Спасибо!

1 Ответ

2 голосов
/ 26 апреля 2019

Мы можем использовать lapply и cbind 1-й столбец с каждым другим столбцом в mtcars

lapply(mtcars[-1], function(x) cbind(mtcars[1], x))

#$cyl
#                     mpg x
#Mazda RX4           21.0 6
#Mazda RX4 Wag       21.0 6
#Datsun 710          22.8 4
#Hornet 4 Drive      21.4 6
#Hornet Sportabout   18.7 8
#Valiant             18.1 6 
#....

#$disp
#                     mpg     x
#Mazda RX4           21.0 160.0
#Mazda RX4 Wag       21.0 160.0
#Datsun 710          22.8 108.0
#Hornet 4 Drive      21.4 258.0
#Hornet Sportabout   18.7 360.0
#....

Это похоже на purrr::map

purrr::map(mtcars[-1], ~cbind(mtcars[1], .))

Или используя Map

Map(cbind, x = mtcars[1], y = mtcars[-1])

Это похоже на purrr::map2

purrr::map2(mtcars[1], mtcars[-1], cbind)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...