我假设您使用data.set
的是“memisc”包。data.set
如果是这种情况,您应该能够通过将您的in包装起来来解决您的问题as.data.frame
,如?data.set
.
这是一个使用 R 附带的USArrests数据集的示例。我创建了一个data.set
版本并尝试运行princomp
并得到您提到的错误。
这就是princomp
原版的工作方式data.frame
。
princomp(USArrests, cor = TRUE)
# Call:
# princomp(x = USArrests, cor = TRUE)
#
# Standard deviations:
# Comp.1 Comp.2 Comp.3 Comp.4
# 1.5748783 0.9948694 0.5971291 0.4164494
#
# 4 variables and 50 observations.
现在,让我们创建一个data.set
版本:
library(memisc)
ARRESTS <- data.set(USArrests)
rownames(ARRESTS) <- rownames(USArrests)
这是您得到错误的地方:
princomp(ARRESTS, cor = TRUE)
# Error in `dimnames<-`(`*tmp*`, value = dimnames) :
# invalid 'dimnames' given for data set
这就是您可以尝试解决的方法:
princomp(as.data.frame(ARRESTS), cor = TRUE)
# Call:
# princomp(x = data.frame(ARRESTS), cor = TRUE)
#
# Standard deviations:
# Comp.1 Comp.2 Comp.3 Comp.4
# 1.5748783 0.9948694 0.5971291 0.4164494
#
# 4 variables and 50 observations.
请注意,我能够修改 的rownames
,data.set
而您提到在这些情况下您会遇到类似的错误。我的猜测是你试图将它们设置为NULL
,这是行不通的。来自“注意”部分?dimnames
:
例如,设置 dimnames 的组件dimnames(A)[[1]] <- value
是一种常见的范例,但请注意,如果分配的值为NULL
. 改为使用rownames
,或(照此执行)操作整个 dimnames 列表。