R语言plspm运行报错:'path_matrix'必须是矩阵
解决plspm包中
path_matrix已验证为矩阵仍报错的问题 问题描述
调用plspm包构建模型时,已通过is.matrix()确认path_matrix是矩阵,但仍触发错误:
Error: 'path_matrix' must be a matrix.
代码与验证步骤
数据子集处理
data1 <- data[data$SN1 == 1,] data2 <- data[data$SN2 == 2,] dataD <- data[data$SND == 3,] View(data1)
内部模型定义
path_matrix <- matrix(c(0, 1, 1, 0, 0, 1, 0, 0, 0), nrow = 3, ncol = 3, byrow = TRUE) rownames(path_matrix) <- colnames(path_matrix) <- c("SS", "FOMO", "BI") is.matrix(path_matrix) # 返回TRUE print(path_matrix)
外部模型与plspm调用
blocks <- list(10:17,2:6,7:9) # 替换为指标实际列索引 str(path_matrix) plspm1 <- plspm(data1, blocks, path_matrix) plspm2 <- plspm(data2, blocks, path_matrix) plspmD <- plspm(dataD, blocks, path_matrix)
已完成的验证
is.matrix(path_matrix) # 确认返回TRUE print(path_matrix) # 确认矩阵结构正确
解决方案
强制重新转换为矩阵:
即使is.matrix()返回TRUE,隐性属性问题可能导致plspm识别失败,重新强制转换:path_matrix <- as.matrix(path_matrix) # 再次验证类型 is.matrix(path_matrix)转换后重新执行plspm调用。
排查变量名冲突:
检查全局环境中是否存在同名非矩阵对象,先删除再重新定义:rm(path_matrix) # 重新构建路径矩阵 path_matrix <- matrix(c(0, 1, 1, 0, 0, 1, 0, 0, 0), nrow = 3, ncol = 3, byrow = TRUE) rownames(path_matrix) <- colnames(path_matrix) <- c("SS", "FOMO", "BI")检查矩阵元素类型:
plspm要求路径矩阵为数值型,确认并强制转换:# 检查元素类型 class(path_matrix[1,1]) # 若不是数值型,强制转换 path_matrix <- matrix(as.numeric(path_matrix), nrow=3, ncol=3) rownames(path_matrix) <- colnames(path_matrix) <- c("SS", "FOMO", "BI")更新plspm包:
旧版本包可能存在类型检查bug,更新到最新版本:install.packages("plspm") library(plspm)
内容的提问来源于stack exchange,提问作者Mr.Song
相关产品推荐
相关产品推荐

