[英]R: renaming column names of dataframe with X and not V
我有這個簡單的代碼創建一個數據幀:
n = 5
p = 20
x=matrix(rnorm(n*p), nrow=n, ncol=p)
df=as.data.frame(x)
我得到了數據框的結果:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14
1 1.8006821 0.2159150 0.2475421 -0.9591421 -0.05854140 -0.27782478 -0.5720555 -1.2093522 -1.34788746 -0.8452290 -1.5755013 -0.63180230 0.7267592 0.3079042
2 -1.2331962 0.3851325 0.7456002 0.6644699 0.43867770 0.52313129 -0.3429952 1.1231887 -0.78820594 -0.4749721 -1.1753511 0.44071083 0.5779413 -0.1477964
3 -1.3504110 -0.3694895 0.3419928 0.5078171 -0.88020980 -0.71862641 0.9641083 -2.7750092 -0.24178360 -0.1351366 -0.1801874 -0.08418993 0.7812341 -1.0273796
4 -0.3446066 -0.8032128 -0.7736583 -0.6863910 0.92667421 -0.06884001 0.5956594 -0.7848495 -0.09455081 0.3616341 0.3650726 -0.20903196 -0.8109611 0.2280463
5 -0.2685629 -0.8994275 -0.4956517 -1.0406881 0.01477389 -0.43855661 -0.5896001 0.1434798 -1.57407092 0.2337882 1.1170875 1.84402283 0.3901575 0.3403759
V15 V16 V17 V18 V19 V20
1 -0.1450630 -0.7464377 1.3052135 0.29509627 0.09459443 -0.64872578
2 -0.5690047 -0.6694732 -0.1550677 0.15692547 -0.11672445 -0.07493947
3 0.3114352 1.4360456 -1.2353439 0.09812837 -0.66051299 1.00596707
4 -1.9778373 -0.6626688 -0.1474813 -0.41951635 0.80435969 0.40983722
5 0.1074216 -0.9764558 0.1439187 -0.51275394 0.44831639 1.18295229
有沒有辦法自動重命名數據框的列名? 而不是使用V1
, V2
,...... V20
為X1
, X2
...... X20
在colnames上使用sub()
應該這樣做
colnames(df) <- sub("V", "X", colnames(df))
df[, 1:5]
# X1 X2 X3 X4 X5
# 1 -1.3082368 0.1279402 -0.5617098 -0.5270066 -0.1255816
# 2 0.6039559 0.4957135 -0.6753756 -0.3299313 1.6700390
# 3 -1.9705086 0.3714967 -0.8691308 -0.9567827 0.2744300
# 4 -0.7793934 -0.7170730 1.0079133 0.4428833 -0.4107202
# 5 -0.7248188 0.6195181 1.6373108 0.2425697 -2.7285534
由於alistaire帶來了管道,這里有一種方法可以在管道中實現:
library(pipeR)
n = 5
p = 20
df <- matrix(rnorm(n*p), nrow=n, ncol=p) %>>%
as.data.frame %>>%
"colnames<-"(sub("V", "X", colnames(.))) %>>%
(? str(.))
這會有用嗎?
names(df) <- stringr::str_replace(names(df), 'V', 'X')
或者您是否正在尋找在as.data.frame
調用中執行此操作的方法?
purrr::set_names
可以使用匿名函數來應用名稱:
set.seed(47)
n = 5
p = 5
x = matrix(rnorm(n * p), nrow = n, ncol = p)
df = as.data.frame(x)
purrr::set_names(df, ~sub('V', 'X', .x))
#> X1 X2 X3 X4 X5
#> 1 1.9946963 -1.08573747 -0.92245624 0.67077922 -1.5661621
#> 2 0.7111425 -0.98548216 0.03960243 -0.08107805 0.2491482
#> 3 0.1854053 0.01513086 0.49382018 1.26424109 -0.3404160
#> 4 -0.2817650 -0.25204590 -1.82822917 -0.70338819 0.4171908
#> 5 0.1087755 -1.46575030 0.09147291 -0.04057817 -0.3264668
它特別方便中途管道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.