繁体   English   中英

轻松删除model.matrix()中的变量前缀

[英]Easily remove the variable prefix in model.matrix()

有谁知道一种快速简单的方法来防止model.matrix在变量名后添加前缀?

例:

A <- factor(sample(0:1, 5, TRUE), labels=c("X", "Y"))
B <- factor(sample(0:2, 5, TRUE), labels=c("Red", "Green", "Blue"))
model.matrix(~ A + B)
#  (Intercept)  AY  BGreen  BBlue
#1           1   0       0      1
#2           1   1       0      1
#3           1   0       0      0
#4           1   1       1      0
#5           1   0       1      0

但是我想有更多这样的东西:

#  (Intercept)  Y  Green  Blue
#1           1  0      0     1
#2           1  1      0     1
#3           1  0      0     0
#4           1  1      1     0
#5           1  0      1     0

有谁知道删除这些前缀的快速方法?

能做

AB <- model.matrix(~ A + B)
colnames(AB) <- c(colnames(AB)[1], gsub("^[[:alpha:]]", "", colnames(AB)[-1]))

#   (Intercept) Y Green Blue
# 1           1 0     0    0
# 2           1 1     0    1
# 3           1 1     0    1
# 4           1 0     1    0
# 5           1 1     1    0

不确定最快的方法,但会使用gsub删除您姓氏中的前几个字母

编辑

或者,您可以在gsub显式指定变量名称并将其删除

AB <- model.matrix(~ A + B)
colnames(AB) <- c(colnames(AB)[1], gsub("^(A|B)", "", colnames(AB)[-1])) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM