【发布时间】:2023-01-14 01:57:50
【问题描述】:
我有一个模型输出,它是一个包含 1 列和多行的矩阵。 矩阵列名称取决于输入条件对,类似于“St1-St2”。 列值可能是 0 或 1 或 -1。
我想过滤值 != 0。
# matrix example
mat1.data <- c(1,0,0,0,1,-1,-1,0,1)
m_rownames <- c("g1", "g2", "g3", "g4", "g5", "g6", "g7", "g8", "g9")
mat1 <- matrix(mat1.data, nrow=9,ncol=1,byrow=TRUE)
colnames(mat1) <- "St1-St2"
rownames(mat1) <- m_rownames
mat1
# get column name
m_column <- colnames(mat1)
# try to filter using rlang's injection
mat2 <- data.frame(mat1) %>%
dplyr::filter(!!as.symbol(m_column) != 0) %>%
rownames_to_column()
如何处理列名中的连字符?
评估代码后出现错误:
#> Error in `dplyr::filter()`:
#> ! Problem while computing `..1 = `St1-St2`type here != 0`.
#> Caused by error in `mask$eval_all_filter()`:
#> ! object 'St1-St2' not found
#> Run `rlang::last_error()` to see where the error occurred.
【问题讨论】: