可变长度在R中不同

可变长度在R中不同,r,R,我在尝试使用cv.lm功能时遇到上述错误。请看我的密码 sample<-read.csv("UU2_1_lung_cancer.csv",header=TRUE,sep=",",na.string="NA") sample1<-sample[2:2000,3:131] samplex<-sample[2:50,3:131] y<-as.numeric(sample1[1,]) y<-as.numeric(sample1[2:50,2]) x1

我在尝试使用cv.lm功能时遇到上述错误。请看我的密码

sample<-read.csv("UU2_1_lung_cancer.csv",header=TRUE,sep=",",na.string="NA")
  sample1<-sample[2:2000,3:131]
  samplex<-sample[2:50,3:131]
  y<-as.numeric(sample1[1,]) 
  y<-as.numeric(sample1[2:50,2]) 
  x1<-as.numeric(sample1[2:50,3])
  x2<-as.numeric(sample1[2:50,4])
  x11<-x1[!is.na(y)]
  x12<-x2[!is.na(y)]
  y<-y[!is.na(y)]
  fit1 <- lm(y ~ x11 + x12, data=sample)
  fit1
  x3<-as.numeric(sample1[2:50,5])
  x4<-as.numeric(sample1[2:50,6])
  x13<-x3[!is.na(y)]
  x14<-x4[!is.na(y)]
  fit2 <- lm(y ~ x11 + x12 + x13 + x14, data=sample)
  anova(fit1,fit2)
  install.packages("DAAG")
  library("DAAG")
  cv.lm(df=samplex, fit1, m=10) # 3 fold cross-validation

请先看上面的数据示例,您使用的
lm(..)
不正确,或者至少是非常非常规的方式。指定
data=sample
参数的目的是使公式使用对
sample
列的引用。通常,在公式参考中使用独立数据是一种非常糟糕的做法

所以试试这个:

## not tested...
sample <- read.csv(...)
colnames(sample)[2:6] <- c("y","x1","x2","x3","x4")
fit1 <- lm(y~x1+x2, data=sample[2:50,],na.action=na.omit)
library(DAAG)
cv.lm(df=na.omit(sample[2:50,]),fit1,m=10)
相当于:

cv.lm(df=samplex,y~x11+x12,m=10)

由于(假定)在
samplex
中没有名为
x11
x12
的列,并且由于您在外部定义了这些向量,
cv.lm(…)
会抛出您得到的错误。

发布运行此代码所需的数据样本,你在什么时候得到错误的峰值高度LCA001 LCA002 LCA003 N001786 32391.111 0.397 0.229-0.281 N005356 32341.473 0.397-0.655-1.301 N002416 32215.474-0.703-0.214-0.901 GS239 31949.777 0.354 0.118 0.272 N016343 31698.853 0.226 0.04-0.006 N003255 N00255.972528 0.024-0.17-0.534-0.4350-0.027N000122 31168.09-0.487-0.533-0.134 GS10564 31106.103-0.156-0.141-1.17 GS17987 31043.876 0.253 0.553 N003674 30876.207 0.109 0.093 0。07@rawr:这是这个等式中的数据样本,如何处理NA?好的观点。显然,您必须在
df
参数中显式省略NAs。查看我的编辑。这似乎对您提供的样本有效。顺便说一句:最好将数据作为问题的编辑发布,而不是在评论中发布。键入
dput(mydata)
并将输出粘贴到您的问题中。@jlhowards:我看不到您所做的编辑。你能重新发送你测试过的吗谢谢你我的电脑坏了。我知道了,谢谢,不客气。既然你是SO的新手。
cv.lm(df=samplex, fit1, m=10)
cv.lm(df=samplex,y~x11+x12,m=10)