You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何提取数据框值大于0单元格的行列名及数值存入空数据框

R语言提取数据框中大于0的单元格信息并写入空数据框

原有代码问题说明

你之前运行的mp3<- which(rownames(df[,] > 0))存在逻辑错误:

  • rownames()仅能提取数据框行名,无法直接对单元格值做判断
  • 未给which()设置arr.ind = TRUE参数时,默认只会返回向量形式的位置序号,无法匹配对应的行列信息
  • 没有做值、行名、列名的组装步骤,自然无法得到预期结果

可行实现方案

第一步:构造示例源数据(和你给出的结构一致)

df <- data.frame(
  X = c(1, 0, 0),
  Y = c(2, 0, 1),
  Z = c(3, 1, 0),
  row.names = c("A", "B", "C")
)

第二步:核心实现代码

直接运行以下代码即可把结果存入你预先创建的mP3空数据框:

# 你预先创建的空数据框
mP3 <- data.frame()

# 提取所有值大于0的单元格的行列位置索引
cell_pos <- which(df > 0, arr.ind = TRUE)

# 匹配行名、列名、单元格值,组装为结果数据框
mP3 <- data.frame(
  rowname = rownames(df)[cell_pos[, "row"]],
  colname = colnames(df)[cell_pos[, "col"]],
  value = df[cell_pos]
)

运行结果

最终mP3存储的内容如下,完全匹配需求:

rowname colname value
1       A       X     1
2       A       Y     2
3       C       Y     1
4       A       Z     3
5       B       Z     1

可选调整

如果需要按行名/列名对结果排序,可以在组装完成后加排序逻辑,例如按行名排序:

mP3 <- mP3[order(mP3$rowname), ]

内容的提问来源于stack exchange,提问作者mike ropri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 06:09:33