在某些情況下,要重命名的列不存在時,是否有聰明的方法來使用dplyr中的重命名函數?在dplyr和column中使用重命名時避免錯誤
例如,我想下面的不導致錯誤
mtcars%>%rename(miles_per_gallon=mpg,missing_varible=foo)
(在這個結果:錯誤:未知的變量:FOO)
而是與所有可能的重命名數據框完成。
目前我明確地檢查重命名
感謝
伊恩
在某些情況下,要重命名的列不存在時,是否有聰明的方法來使用dplyr中的重命名函數?在dplyr和column中使用重命名時避免錯誤
例如,我想下面的不導致錯誤
mtcars%>%rename(miles_per_gallon=mpg,missing_varible=foo)
(在這個結果:錯誤:未知的變量:FOO)
而是與所有可能的重命名數據框完成。
目前我明確地檢查重命名
感謝
伊恩
有時它的好於dplyr
沒有盡全力前特定的列存在。這可能是其中的一次。我會成立,作爲一個鍵進行操作的向量:
namekey <- c(mpg="miles_per_gallon", cyl="cylinders", disp="displacement", hp="horse_power",
drat="rear_axle_ratio", wt="weight", qsec="quarter_mile_time", vs="v_s",
am="transmission", gear="number_of_gears", carb="number_of_carburetors",
foo="missing_variable")
mtcars1 <- mtcars[,1:2]
mtcars1$foo <- rnorm(nrow(mtcars1))
names(mtcars1) <- namekey[names(mtcars1)]
head(mtcars1)
# miles_per_gallon cylinders missing_variable
# Mazda RX4 21.0 6 -0.9901081
# Mazda RX4 Wag 21.0 6 0.2338014
# Datsun 710 22.8 4 -0.3077473
# Hornet 4 Drive 21.4 6 1.1200518
# Hornet Sportabout 18.7 8 0.7482842
# Valiant 18.1 6 0.4206614
一旦你有你的鑰匙,它只是一個單一的,易於理解的代碼,不會重命名線。
這可能是好的,但仍然可以嘗試將所有內容保存在一個單獨的列表中範式:) –
@ Maxim.K'dplyr'是一個包含base R的範例。這是一個基本的R解決方案,因此在這個意義上它仍然是一個範例。這只是不依賴任何'dplyr'帶給遊戲的附加解決方案。 –
該plyr
包具有rename()
函數與warn_missing
參數。
plyr::rename(
mtcars,
replace = c(mpg="miles_per_gallon", foo="missing_varible"),
warn_missing = FALSE
)
如果你使用它,請考慮使用requireNamespace()
instead oflibrary()
,所以它的功能名稱不與dplyr的碰撞。
爲什麼要重命名不存在的列? – DatamineR
並非所有與我一起工作的對象(行)都存在屬性(列)。這意味着如果我以特定的方式對數據進行子集分類,我最終可能會得到比我預期的列數少的數據幀 - 因此需要進行明確的檢查 – Iain