houminzhi
各位前辈好!我是R语言的新手,现在因课题需要,学习glmnet package 中的LASSO算法,我的目标的文件在try.csv这个表格中,一个有88个病人,其中OS是一个观察的结局(存活时间),其余的5个指标是分别是CA125,CEA,HE4,age, size,运算如下:
> try<-read.csv("try.csv")
> x.model <- model.matrix(OS~CA125+HE4+CEA+size+age,try)[,-1]
> library(glmnet)
> lasso.mod<-glmnet(x,os,alpha=1)
输入以上命令后,提示:
Error in glmnet(x, os, alpha = 1) :
number of observations in y (20) not equal to the number of rows of x (88)
而当我换成另外的方法(复制粘贴数据的方法)
> HE4<-read.table("clipboard",header=F)
> CA125<-read.table("clipboard",header=F)
> CEA<-read.table("clipboard",header=F)
> age<-read.table("clipboard",header=F)
> size<-read.table("clipboard",header=F)
> OS<-read.table("clipboard",header=F)
> x<-data.frame(CA125,HE4,CEA,size,age)
> lasso.mod<-glmnet(x,OS,alpha=1)
则提示
Error in weighted.mean.default(y, weights) :
'x' and 'w' must have the same length
但是,我print(x)及print(OS),都显示了
> print(x)
V1 V1.1 V1.2 V1.3 V1.4
1 23.50 96.0 1.26 12 54
2 491.60 123.0 1.39 26 60
3 2612.00 180.0 1.14 10 58
4 128.00 193.0 10.50 3 52 共88个;而
> print(OS)
V1
1 60
2 68
3 49
4 22 也是共88个,
就不明白这个weights 需要怎样才能够跟 x 长度一样。
谢谢!