我试图找到一种方法来使用管道从数据框(值之一,名称之一)中的两列创建命名向量.到目前为止,我有以下(使用mtcars示例数据)...
library(tidyverse)
x <- mtcars %>%
rownames_to_column("car") %>%
select(car, mpg)
pull(mpg)
names(x) <- row.names(mtcars)
x
# Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout
# 21.0 21.0 22.8 21.4 18.7
# Valiant Duster 360 Merc 240D Merc 230 Merc 280
# 18.1 14.3 24.4 22.8 19.2
# Merc 280C Merc 450SE Merc 450SL Merc 450SLC Cadillac Fleetwood
# 17.8 16.4 17.3 15.2 10.4
# Lincoln Continental Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla
# 10.4 14.7 32.4 30.4 33.9
# Toyota Corona Dodge Challenger AMC Javelin Camaro Z28 Pontiac Firebird
# 21.5 15.5 15.2 13.3 19.2
# Fiat X1-9 Porsche 914-2 Lotus Europa Ford Pantera L Ferrari Dino
# 27.3 26.0 30.4 15.8 19.7
# Maserati Bora Volvo 142E
# 15.0 21.4
Run Code Online (Sandbox Code Playgroud)
当涉及到我的实际数据时,这不是很方便,因为我想避免将转换后的数据帧的副本保存为仅使用该name函数的名称列.
我们可以使用它names<-来获得一个名字vector
library(tidyverse)
mtcars %>%
rownames_to_column("car") %>%
{'names<-'(.$mpg, .$car)}
Run Code Online (Sandbox Code Playgroud)
或者 set_names
mtcars %>%
rownames_to_column("car") %>%
select(x = mpg, nm = car) %>%
pmap(set_names) %>%
unlist
Run Code Online (Sandbox Code Playgroud)
从tibble1.3.0 (2017-04-02) 开始,您可以使用tibble::deframe():
library(tidyverse)
mtcars %>%
rownames_to_column("car") %>%
select(car, mpg) %>%
deframe()
Run Code Online (Sandbox Code Playgroud)
Mazda RX4 Mazda RX4 Wag Datsun 710
21,0 21,0 22,8
Hornet 4 Drive Hornet Sportabout Valiant
21,4 18,7 18,1
Duster 360 Merc 240D Merc 230
14,3 24,4 22,8
Merc 280 Merc 280C Merc 450SE
19,2 17,8 16,4
Merc 450SL Merc 450SLC Cadillac Fleetwood
17,3 15,2 10,4
Lincoln Continental Chrysler Imperial Fiat 128
10,4 14,7 32,4
Honda Civic Toyota Corolla Toyota Corona
30,4 33,9 21,5
Dodge Challenger AMC Javelin Camaro Z28
15,5 15,2 13,3
Pontiac Firebird Fiat X1-9 Porsche 914-2
19,2 27,3 26,0
Lotus Europa Ford Pantera L Ferrari Dino
30,4 15,8 19,7
Maserati Bora Volvo 142E
15,0 21,4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |