R 如何使所有变量的长度相同?

R 如何使所有变量的长度相同?,r,R,我想在线性模型中拟合数据,但由于长度不同而无法执行。如何解决这个问题 temp<-as.factor(c(rep(150,2),rep(160,2),rep(170,2))) pressure<-as.factor(c(rep(200,6),rep(215,6),rep(230,6))) obs<-c(90.4,90.2,90.1,90.3,90.5,90.7,90.7,90.6,90.5,90.6,90.8,90.9,90.2,90.4,89.9,90.1,90.4,90.1

我想在线性模型中拟合数据,但由于长度不同而无法执行。如何解决这个问题

temp<-as.factor(c(rep(150,2),rep(160,2),rep(170,2)))
pressure<-as.factor(c(rep(200,6),rep(215,6),rep(230,6)))
obs<-c(90.4,90.2,90.1,90.3,90.5,90.7,90.7,90.6,90.5,90.6,90.8,90.9,90.2,90.4,89.9,90.1,90.4,90.1)
t1<-data.frame(temp,pressure,obs)

result<-lm(obs~pressure*temp)

temp我们需要指定
数据

lm(obs~pressure*temp, t1)
#Call:
#lm(formula = obs ~ pressure * temp, data = t1)

#Coefficients:
#        (Intercept)          pressure215          pressure230              temp160              temp170  pressure215:temp160  pressure230:temp160  pressure215:temp170  
#          9.030e+01            3.500e-01           -7.479e-14           -1.000e-01            3.000e-01            8.194e-14           -2.000e-01           -1.000e-01  
#pressure230:temp170  
#         -3.500e-01  

否则,它将检查在元素数量较少的全局环境中创建的变量。当我们创建
data.frame
时,由于循环使用,元素被复制为具有相同的长度

我们需要指定
数据

lm(obs~pressure*temp, t1)
#Call:
#lm(formula = obs ~ pressure * temp, data = t1)

#Coefficients:
#        (Intercept)          pressure215          pressure230              temp160              temp170  pressure215:temp160  pressure230:temp160  pressure215:temp170  
#          9.030e+01            3.500e-01           -7.479e-14           -1.000e-01            3.000e-01            8.194e-14           -2.000e-01           -1.000e-01  
#pressure230:temp170  
#         -3.500e-01  

否则,它将检查在元素数量较少的全局环境中创建的变量。当我们创建
data.frame
时,由于循环使用,元素被复制为具有相同长度

当您查看
t1
数据帧时,是否正确?R在创建数据帧时自动循环
temp
向量以匹配其他向量的长度,是否将右侧
temp
值与其他行匹配?对包含每个变量(相关和独立)值的观测值执行线性回归。因此,重点不是解决R的技术问题,而是确保您的数据确实是正确的。如果最终得到不同长度的向量,这意味着数据集有问题,解决方案必须是纠正数据。当您查看
t1
数据帧时,它是否正确?R在创建数据帧时自动循环
temp
向量以匹配其他向量的长度,是否将右侧
temp
值与其他行匹配?对包含每个变量(相关和独立)值的观测值执行线性回归。因此,重点不是解决R的技术问题,而是确保您的数据确实是正确的。如果最终得到不同长度的向量,这意味着数据集有问题,解决方案必须是纠正数据。