2016-11-18 7 views
-1

3 일이 지난 R입니다. 내가 잘못하고있는 것을 알 수 없습니다. glmnet cox 모델에 양방향 상호 작용이있는 열을 보내려고합니다. 나는이 프로그램을 실행할 때 나는 오류를 사전에model.frame.default (object, data, xlev = xlev)의 오류 : 개체가 행렬이 아니므로

Error in model.frame.default(object, data, xlev = xlev) :  
object is not a matrix 

감사를 얻을 수

xs<-c("Col1", "Col2", "Col3") 
v<-c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, NA, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, NA, 25, 26, 27, 28, 29, 30) 
df<-data.frame(matrix(v,ncol=3)) 
dm<-as.matrix(df) 
dm<-matrix(dm[complete.cases(dm)], ncol=3) 
colnames(dm)<-xs 
dfdata<-data.frame(dm) 
f<-as.formula(time~.*.) 
xmatrix<-model.matrix(f, dfdata)[,-1] 

재현 코드를 만들기 위해 dtable

편집이라는 일부 data.frame()를 가지고

답변

0

수식 때문입니다. time ~. *. data.frame()에는 수식이 모든 것을 지나갈 시간 열이 없습니다.

0

오류가 정확히 무엇이 잘못되었는지를 의심합니다. model.matrix()에 전달할 개체가 매트릭스가 아닙니다. class(data)의 결과는 무엇입니까? 아마 data.frame 일 겁니다.

data으로 전화하여 model.matrix()as.matrix()을 추가하십시오.

두 개의 다른 메모 - 데이터를 호출하지 마십시오. 프레임 data. 또한 여기에 재현 가능한 예제를 사용하여 질문을합니다. 더 나은 응답을 얻을 수 있습니다.

+0

아니요, model.matrix()에는 두 번째 용어로 data.frame()이 필요합니다. 다른 두 가지 일에 주목. – Faller

0

나는이 대신 생각 :

dm <- as.matrix(dm[complete.cases(dm), ]) 

내 자신의 뿔을 (너무) 불다하지만, 데이터 관리 작업을 간소화 할 수 glmnetUtils 사용을 고려하지 :

dm<-matrix(dm[complete.cases(dm)], ncol=3) 

당신이 원하는 프레임, 수식 및 모델 행렬.

+0

고마워요, 제가 살펴 보겠습니다. as.matrix()까지 나는 사랑이 없습니다. – Faller