使用R中的softImpute :: softImpute命令保留列名

时间:2013-12-03 02:10:22

标签: r missing-data

我正在尝试在大型数据框(大约4000个变量)中计算缺失的变量。我使用了softImp命令,但它不保留列名,但在运行代码后将它们重命名为X1 ... X4000。

fin.train是我的数据框架。

install.packages("softImute"); library(softImpute)
# Construct a training set
softImp = softImpute(as.matrix(fin.train), rank.max = 60)
data.comp = softImp$u %*% diag(softImp$d) %*% t(softImp$v)
data.comp=data.frame(data.comp)
fin.train[fin.train==NA]=data.comp[fin.train==NA]

有没有办法可以保留列名?我试图在此之后执行回归,因此我需要保持变量名称不变。

1 个答案:

答案 0 :(得分:0)

还没有测试过(没有任何数据),但是:

 fin.train[ !complete.cases(fin.train), ] = data.comp[ !complete.cases(fin.train), ]

如果名字仍然缺失,那么可能是:

colnames(fin.train) <- colnames(data.comp)

我发现自己想知道这是否有效(逻辑索引):

fin.train[ is.na(fin.train) ] <- data.comp{ is.na(fin.train) ]

或者可能转换为数字索引:

 fin.train[ which( is.na(fin.train), arr.ind=TRUE)  ] <- 
                                 data.comp[ which( is.na(fin.train), arr.ind=TRUE) ]