首页 > 解决方案 > 无法将数据集中的字母数字值仅转换为数字

问题描述

我正在尝试将实验的 m/z 值和强度绘制为 x 和 y 坐标。我使用 Cardinal MSI 包来加载我的数据,因为没有其他东西可以读取我的数据文件并为每个 m/z 值平均跨数据集的所有强度。这很好用,但是我留下了一个值,其中包含 m/z 值的格式“m/z = 900.01”和强度的数字。

到目前为止,我已经尝试使用

data <- gsub("m/z = ", "", data)

这完全消除了 m/z 值。我还尝试转换为数据框而不是值,这很好用,但 m/z 值是强度的一组标题。同样,尝试 gsub 会完全删除 m/z 值。是否有另一种方法可以删除“m/z =”并仅获取它后面的数字,而该数字仍与强度值相关?谢谢!

标签: r

解决方案


看起来您有一个命名的 vector,例如,名称"m/z = 899.91"具有 value 0.6186...,名称"m/z = 900.36"具有 value1.35811...等。您的向量是数字的,并且值都是小于一的部分。

899.91、900.36 等是名称的一部分。所以as.numeric(gsub("m/z = ", "", names(data)))应该给你名字的数字部分。

您可能希望创建一个数据框,其中一列用于 m/z,一列用于强度:

my_data = data.frame(
  mz = as.numeric(gsub("m/z = ", "", names(data))),
  intensity = data
) 

然后,您可以plot(my_data)或制作其他更精美的情节。


推荐阅读