id2 sbp1 dbp1 age1 sbp2 dbp2 sex bmi1 bmi2 smoke drink exercise
1 1 134.5 89.5 40 146 84 2 21.74685 22.19658 1 0 1
2 4 128.5 89.5 48 125 70 1 24.61942 22.29476 1 0 0
3 5 105.5 64.5 42 121 80 2 22.15103 26.90204 1 0 0
4 8 116.5 79.5 39 107 72 2 21.08032 27.64403 0 0 1
5 9 106.5 73.5 26 132 81 2 21.26762 29.16131 0 0 0
6 10 120.5 81.5 34 130 85 1 24.91663 26.89427 1 1 0
我在这里有这个代码用于我正在制作的函数:
linreg.ols<- function(indat, dv, p1, p2, p3){
data<- read.csv(file= indat, header=T)
data[1:5,]
y<- data$dv
x <- as.matrix(data.frame(x0=rep(1,nrow(data)), x1=data$p1, x2=data$p2,
x3=data$p3))
inv<- solve(t(x)%*%x)
xy<- t(x)%*%y
betah<- inv%*%xy
print("Value of beta hat")
betah
}
当我用这一行运行我的代码时:
linreg.ols("bp.csv",sbp1,smoke,drink,exercise)
我收到以下错误:
Error in data.frame(x0 = rep(1, nrow(data)), x1 = data$p1, x2 = data$p2, :
参数意味着不同的行数:75,0
我有一种感觉,因为我在创建x变量的行上提取p1,p2和p3列。
编辑:更改为y&lt; -data $ dv 编辑:添加部分样本。另外,我试过了:
x <- as.matrix(data.frame(1,data[,c("p1","p2","p3")]))
但是那返回了错误:
Error in `[.data.frame`(data, , c("p1", "p2", "p3")) : undefined columns selected