更改模型矩阵的名称

时间:2014-06-02 21:43:01

标签: r

最近我遇到了一个非常有趣的问题。我想更改我创建的模型矩阵的名称。

colnames(model.matrix(~as.factor(c(rep(0,10),1:10))))<-    
as.character(sapply(0:10,function(i) paste('sample',i,sep='')))

我不断得到错误的“分配目标扩展到非语言对象”。最后我能够解决这个问题。我所做的就是首先将model.matrix分配给变量并在之后更改其colnames。任何人都可以告诉我为什么第一个案例没有成功?非常感谢

a<-model.matrix(~as.factor(c(rep(0,10),1:10))))   
colnames(a) <- as.character(sapply(0:10,function(i) paste('sample',i,sep=''))) 

1 个答案:

答案 0 :(得分:0)

我的猜测是,人们无法修改匿名对象的属性,因为......这是毫无意义的。

您当然可以创建一个匿名对象,以便查看打印到控制台的结果:

model.matrix(foo)

您当然可以询问匿名对象属性的,以便将该值打印到控制台:

colnames(model.matrix(foo))

但是如果您要更改匿名对象的属性值

colnames(model.matrix(foo)) <- bar

然后没有将被打印到控制台,因为赋值语句不会打印任何内容。由于您创建的匿名对象在语句完成执行后立即消失,因此实际上没有理由这样做。