我想将变量写入现有矩阵的f
某些元素 ( ) 中。假设是一个因素:index
m
f
f <- factor(c(3,3,0,3,0))
m <- matrix(NA, 10, 1)
index <- c(1,4,5,8,9)
使用
m[index] <- f
没有给出期望的结果,因为它将标签('1'和'2')放入m
而不是原始值('0'和'3')。因此,我用
m[index] <- as.numeric(levels(f))[f]
相反,效果很好。
但在我的情况下,f
并不总是一个因素,但也可以是数字
f <- c(3.43, 4.29, 5.39, 7.01, 7.15)
我是否必须像这样检查它
if ( is.factor(f) ) {
m[index] <- as.numeric(levels(f))[f]
} else {
m[index] <- f
}
还是有一种“通用”方式将 的“真实”值f
放入矩阵m
中,而与 的类型无关f
?
提前致谢!
PS:背景是SVM模型训练的f
结果f <- predict(mymodel, Xnew)
,可以是分类模型(然后是因子)或回归模型(然后是数字)。我确实知道模型的类型,但上面的 if 子句对我来说似乎有点不方便。model
model <- svm(Xtrain, Ytrain)
f
f