R:将 summary()$coef 转换为数值向量
R: Convert summary()$coef into numeric vector
我正在尝试使用标准曲线(回归线)来分析我的数据。标准曲线看起来类似于:
myData <- data.frame(x=rep(c(10,1,0.1,0.01),each=3),
y=(c(26, 25, 24.5,2.65,2.4,2.5,
0.25,0.245,0.265, 0.025,0.027,0.024)))
当我使用函数 lm()
获取回归线,然后使用 coef 接收系数时,效果很好。但是,当我尝试将输出转换为可以在以后的代码中重用的数字向量时,值从原来的值变为 1 和 2。我做错了什么?感谢您的帮助!
xy <- lm(y~x, data=myData) #Intercept(y) = 0.000653277183897452; x = 2.51659647986179
datOut <- summary(xy)$coef
PPL <- cbind(VariableName=rownames(datOut), datOut)
ppl<-as.data.frame(PPL)
#Results look great
ppl$Estimate<-as.numeric(ppl$Estimate)
#Estimate column content changes to 1 and 2
ppl$Estimate
最初是一个因素。如果您将它直接转换为数字,它将提供因子的水平(因此是 1、2...)。您必须先将其转换为字符 :
ppl$Estimate<-as.numeric(as.character(ppl$Estimate))
或者如 27 ϕ 9 所述,在初始化数据帧时使用 stringsAsFactors = FALSE
。
永远、永远不要使用 cbind
,然后使用 as.data.frame
。 cbind
更改了数据类型,因为它创建了一个矩阵,而矩阵只能包含一种数据类型。只需使用 data.frame
之后就不需要“修复”数据类型了:
set.seed(42)
xy <- lm(y~x, data=data.frame(x = rnorm(10), y = rnorm(10)))
datOut <- summary(xy)$coef
ppl <- data.frame(VariableName=rownames(datOut), datOut)
str(ppl)
#'data.frame': 2 obs. of 5 variables:
#$ VariableName: chr "(Intercept)" "x"
#$ Estimate : num 0.237 -0.732
#$ Std..Error : num 0.616 0.64
#$ t.value : num 0.385 -1.144
#$ Pr...t.. : num 0.71 0.286
我正在尝试使用标准曲线(回归线)来分析我的数据。标准曲线看起来类似于:
myData <- data.frame(x=rep(c(10,1,0.1,0.01),each=3),
y=(c(26, 25, 24.5,2.65,2.4,2.5,
0.25,0.245,0.265, 0.025,0.027,0.024)))
当我使用函数 lm()
获取回归线,然后使用 coef 接收系数时,效果很好。但是,当我尝试将输出转换为可以在以后的代码中重用的数字向量时,值从原来的值变为 1 和 2。我做错了什么?感谢您的帮助!
xy <- lm(y~x, data=myData) #Intercept(y) = 0.000653277183897452; x = 2.51659647986179
datOut <- summary(xy)$coef
PPL <- cbind(VariableName=rownames(datOut), datOut)
ppl<-as.data.frame(PPL)
#Results look great
ppl$Estimate<-as.numeric(ppl$Estimate)
#Estimate column content changes to 1 and 2
ppl$Estimate
最初是一个因素。如果您将它直接转换为数字,它将提供因子的水平(因此是 1、2...)。您必须先将其转换为字符 :
ppl$Estimate<-as.numeric(as.character(ppl$Estimate))
或者如 27 ϕ 9 所述,在初始化数据帧时使用 stringsAsFactors = FALSE
。
永远、永远不要使用 cbind
,然后使用 as.data.frame
。 cbind
更改了数据类型,因为它创建了一个矩阵,而矩阵只能包含一种数据类型。只需使用 data.frame
之后就不需要“修复”数据类型了:
set.seed(42)
xy <- lm(y~x, data=data.frame(x = rnorm(10), y = rnorm(10)))
datOut <- summary(xy)$coef
ppl <- data.frame(VariableName=rownames(datOut), datOut)
str(ppl)
#'data.frame': 2 obs. of 5 variables:
#$ VariableName: chr "(Intercept)" "x"
#$ Estimate : num 0.237 -0.732
#$ Std..Error : num 0.616 0.64
#$ t.value : num 0.385 -1.144
#$ Pr...t.. : num 0.71 0.286