让我们假设,我有一个数据框:
xyz <- c(1,2,3,4,5,6)
zyx <- c("A", "B", "C", "A", "B", "C")
zyx <- factor(zyx)
myframe <- data.frame(xyz, zyx)
Run Code Online (Sandbox Code Playgroud)
现在我想计算 zyx 变量的对比度。我用:
contrasts(myframe$zyx) <- contr.treatment(3, base=3)
Run Code Online (Sandbox Code Playgroud)
如果我现在查看变量 myframe$zyx,我会得到:
[1] A B C A B C
attr(,"contrasts")
1 2
A 1 0
B 0 1
C 0 0
Levels: A B C
Run Code Online (Sandbox Code Playgroud)
但我想将 contras 命名为“1”或“2”,而不是“contr_A_vs_C”和“contr_B_vs_C”。
你有什么想法?
编辑:
好吧,似乎不是一个简单的问题。让我更直白一点:
对比函数中是否有“名称”命令可以解决?
例如,如果您进行线性回归,您可以使用 vie direct 命令处理模型估计值,例如,如果您想要 R 平方的值,您可以输入:
rsquared <- regressionmodel$r.squared
Run Code Online (Sandbox Code Playgroud)
也许,在对比中有一些相似的东西,比如
dataframe$contrast.names <- ...
Run Code Online (Sandbox Code Playgroud)
?
在matrix
你指的是存储为attribute
你所指定的列。可以直接访问,如下:
attr(myframe$zyx, "contrasts")
# 1 2
# A 1 0
# B 0 1
# C 0 0
Run Code Online (Sandbox Code Playgroud)
因此,您可以colnames
像往常一样使用(但我不知道这是否会破坏以后可能使用的默认输出值contrasts
or contr.treatment
)。
colnames(attr(myframe$zyx, "contrasts")) <-
c("contr_A_vs_C", "contr_B_vs_C")
myframe$zyx
# [1] A B C A B C
# attr(,"contrasts")
# contr_A_vs_C contr_B_vs_C
# A 1 0
# B 0 1
# C 0 0
# Levels: A B C
Run Code Online (Sandbox Code Playgroud)