【发布时间】:2012-02-28 12:16:30
【问题描述】:
我有一个文本文件,其中的值有一个或两个或一些小数点后 3 个。这些值是由软件根据基因的信号强度生成的。当我试图从中计算距离矩阵时,我得到了警告信息:
警告信息: 在 dist(sam) :强制引入的 NA 下面给出了一个示例文本文件: 样品1
23.45.12
b 123.345.234
c 45.2311.34
我需要将这些值转换为小数点后一位或实数,以便我可以从中计算距离矩阵,然后我可以将其用于聚类。我的预期结果如下:
sample123.45
b 123.345
c 45.2311
请帮帮我
【问题讨论】:
-
你的意思是“。”是分隔三个值的值吗?如果不是,“23.45.12”代表什么数字?
-
但是里面有两位小数。
-
@Thileepan 有两位小数的数字不是数字,至少在西方世界,更重要的是,就 R 而言。那么,您的“两位小数”值在实数世界中指的是什么?
-
@Thileepan R 不在乎这些数字是否对您有任何意义,它期望有一个小数位的数字,否则这些不是根据 R 的数字。现在您告诉我们如何转换这些数值转换为十进制数,否则我将投票关闭此 Q,因为您很迟钝,没有听我们告诉您的内容,并且没有转换,就没有没有方法来回答您的问题问题。
-
如果你只想去掉最后一个小数点和后面的任何东西,试试
strsplt().并把前两个部分粘在一起。splt <- strsplit(vector, "\\."),其中vector是您的字符串列。然后做sapply(splt, function(x) as.numeric(paste(x[1], ".", x[2], sep = "")))。例如。splt <- strsplit("23.45.12", "\\."),然后sapply(splt, function(x) as.numeric(paste(x[1], ".", x[2], sep = "")))给出[1] 23.45,这是数字。没有四舍五入,只是截断。