在R中使用list()函数存储模拟数据集

时间:2018-10-31 18:30:59

标签: r list matrix

我正在使用以下,.代码来模拟var theValue = { "items": "{'Link': 'http://www.indiansalt.com/services/emp_add_form.asp', 'Title': 'Apply Online'},{'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/8522948124.pdf', 'Title': 'Notification '},{'Link': 'http://www.indiansalt.com/', 'Title': ' Official Website'}" } // replace single-quotes w/double-quotes theValue.items = theValue.items.replace(/'/g, '"'); // wrap in brackets theValue.items = '[' + theValue.items + ']'; // parse theValue.items = JSON.parse(theValue.items); // if desired in string format, stringify var result = JSON.stringify(theValue, null, 1); console.log(result);数据集。我已将它们复制到下面。

r

我使用了上面的代码来模拟上面的normal矩阵数据集。 set.seed(1234) ml = matrix(c(4,2,3,5,6,8,1,4,3), nrow = 3, ncol = 3) ml #left side of parameter [,1] [,2] [,3] [1,] 4 5 1 [2,] 2 6 4 [3,] 3 8 3 mr = matrix(c(6,4,5,2,8,7,6,9,4), nrow = 3, ncol = 3) mr #right side of parameter [,1] [,2] [,3] [1,] 6 2 6 [2,] 4 8 9 [3,] 5 7 4 n = nrow(ml) set.seed(1234) y.all = list() for(j in 1:ncol(ml)){ for (i in 1:(n - 1)){ y.all[[i]] = c(rnorm(i, ml[i, j], 1), rnorm((n - i), mr[i,j], 1)) } } sim.data = matrix(unlist(y.all), ncol(ml)*(ncol(ml) - 1)*ncol(ml), 1, byrow = TRUE) sim.data = matrix(sim.data, nrow = ncol(ml), ncol = nrow(sim.data)/nrow(ml)) dim(sim.data) [1] 3 6 sim.data [,1] [,2] [,3] [,4] [,5] [,6] [1,] 0.2237461 3.889715 0.2237461 3.889715 0.2237461 3.889715 [2,] 6.0644588 3.488990 6.0644588 3.488990 6.0644588 3.488990 [3,] 6.9594941 8.088805 6.9594941 8.088805 6.9594941 8.088805 的第一个3X6使用2 columns的{​​{1}}和sim.data的{​​{1}}创建,依此类推。

但是,我以以下方式分别检查了它们。不幸的是,它们并不相同。

1st column

我在上面的ml代码中犯了任何错误吗?有什么方法可以模拟数据集?

先谢谢您。

1 个答案:

答案 0 :(得分:1)

set.seed(1234)
y.all = list()
for(j in 1:ncol(ml)){
   for (i in 1:(n - 1)){
      y.all[[i]] = c(rnorm(i, ml[i, j], 1), rnorm((n - i), mr[i,j], 1))
    }
  }

您的for循环更改ji,但是您的y.all仅查看i,因此,当j更改时,它会覆盖{{1} }。最简单的解决方法是添加一个计数器:

i

这首先产生与您的底部方法匹配的结果。 (当您在中间再次使用y.all = list() counter = 1 for(j in 1:ncol(ml)){ for (i in 1:(n - 1)){ y.all[[counter]] = c(rnorm(i, ml[i, j], 1), rnorm((n - i), mr[i,j], 1)) counter = counter + 1 } } 时,它们会发散。也许您想要set.seed() inside 外循环?)

set.seed