【发布时间】:2018-08-26 09:31:26
【问题描述】:
我正在尝试找到一种方法,使用管道从数据框中的两列(一个值,一个名称)创建命名向量。到目前为止,我有以下(使用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
当涉及到我的实际数据时,这不是很方便,因为我想避免保存转换后的数据框的副本以仅将名称列用于 name 函数。
【问题讨论】:
-
这里为什么需要链?
setNames(mtcars$mpg, row.names(mtcars)) -
@akun 我已经有一条大链来获得我的
mtcars等价物 - 只是想知道是否有办法完成它以获得我想要的对象而不必打破链并保存将两列数据框作为单独的对象 -
试试
mtcars %>% rownames_to_column("car") %>% {'names<-'(.$mpg, .$car)} -
@akun 太棒了!!