我的文本文件的值为一个或两个或一些带有3个小数点。这些值是由软件根据基因的信号强度生成的。当我尝试计算距离矩阵时,我得到了警告信息:
警告讯息: 在dist(sam):通过强制引入的NA 下面给出了一个示例文本文件: SAMPLE1
a 23.45.12
b 123.345.234
c 45.2311.34
我需要将这些值转换为一个小数点或实数,以便我可以计算距离矩阵,我可以使用它来进行聚类。我的预期结果如下:
sample1
23.45
b 123.345
c 45.2311
Pleaso帮帮我
答案 0 :(得分:2)
您可以使用as.numeric
和gsub
以及合适的正则表达式在一行代码中执行此操作:
sample1 <- c(
a = "23.45.12",
b = "123.345.234",
c = "45.2311.34"
)
as.numeric(
gsub("(\\d+\\.\\d+)\\..*", "\\1", sample1)
)
[1] 23.4500 123.3450 45.2311
正则表达式:
\\d*
找到一个或多个数字\\.
找到一段时间(\\d+\\.\\d+)
找到两组数字,其间有句点,然后将其分组(带括号)\\..*
找到一个句点后跟一个完整的通配符然后gsub
仅使用括号内的内容替换整个字符串。这称为正则表达式反向引用,由\\1
表示。