最近我遇到了一个非常有趣的问题。我想更改我创建的模型矩阵的名称。
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='')))
答案 0 :(得分:0)
我的猜测是,人们无法修改匿名对象的属性,因为......这是毫无意义的。
您当然可以创建一个匿名对象,以便查看打印到控制台的结果:
model.matrix(foo)
您当然可以询问匿名对象属性的值,以便将该值打印到控制台:
colnames(model.matrix(foo))
但是如果您要更改匿名对象的属性值
colnames(model.matrix(foo)) <- bar
然后没有将被打印到控制台,因为赋值语句不会打印任何内容。由于您创建的匿名对象在语句完成执行后立即消失,因此实际上没有理由这样做。