将矩阵转换为矩阵,只有唯一的数字R.

时间:2016-06-30 12:56:03

标签: r matrix jitter

如何将矩阵更改为仅包含唯一数字的矩阵

我试过了:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        SqlDS.SelectCommand = "SELECT [id],[city] FROM [cities] UNION SELECT 10,'New York'";
    }
}

但这不会使所有数字都独一无二。 我如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

添加更多小数,然后它们变得独一无二。

options(digits=10)

dataset <- as.matrix(iris[,1:4])
datasetUnique <- jitter(dataset,factor = 0.001)

> head(datasetUnique)
     Sepal.Length Sepal.Width Petal.Length  Petal.Width
[1,]  5.099982209 3.500005068  1.399988968 0.2000082396
[2,]  4.900019249 2.999988556  1.399985779 0.2000159874
[3,]  4.699981033 3.199993951  1.300013794 0.1999958768
[4,]  4.600000369 3.099985655  1.499996616 0.1999957113
[5,]  5.000014609 3.599997256  1.400002512 0.1999995772
[6,]  5.399992065 3.900010935  1.700003428 0.3999821202

第二种可能性是使用非随机数来防止运气不好&#34;。

options(digits=10)

dataset          <- as.matrix(iris[,1:4])
increment_matrix <- matrix(seq( from = 0, to = 0.001, length.out =  ncol(dataset)* nrow(dataset) ) , ncol = ncol(dataset))
datasetUnique    <- dataset + increment_matrix

答案 1 :(得分:0)

可能不是最干净的方式,但您可以使用sample获取唯一数字,然后将其除以大数以产生噪音,然后将其添加到您的矩阵上,即

mat <- matrix( c(1,2,2,3) , nrow = 2)  
mat + sample.int(5000, nrow(mat) * ncol(mat)) / 5000000

确保根据您所需的准确度调整数字