首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中添加输出向量作为矩阵的新行

在R中添加输出向量作为矩阵的新行
EN

Stack Overflow用户
提问于 2014-09-01 14:35:25
回答 1查看 59关注 0票数 0

我有以下代码来测试for循环以生成给定pdf的多个样本值:

代码语言:javascript
复制
library(EnvStats)
mvfy <- matrix(, nrow = 0, ncol = 1)
for (i in 1:1 ) {
  meanmean = 400
  sdmean = 5
  lsup <- 1 - pnorm(420, mean = meanmean, sd = sdmean)
  linf <- pnorm(380, mean = meanmean, sd = sdmean)
  meanfy <- simulateVector(2, distribution = "norm",
                        param.list = list(mean = meanmean, sd = sdmean), #seed = i,
                        sort = FALSE, left.tail.cutoff = linf, right.tail.cutoff = lsup, sample.method = "LHS")
  meansd = 10
  sdsd = 5
  lsup <- 1 - pnorm(20, mean = meansd, sd = sdsd)
  linf <- pnorm(1, mean = meansd, sd = sdsd)
  sdfy <- simulateVector(2, distribution = "norm",
                           param.list = list(mean = meansd, sd = sdsd), #seed = i,
                           sort = FALSE, left.tail.cutoff = linf, right.tail.cutoff = lsup, sample.method = "LHS")
  lsup <- 1 - pnorm(480, mean = meanfy[1], sd = sdfy[1])
  linf <- pnorm(320, mean = meanfy[1], sd = sdfy[1])
  vfy <- simulateVector(100, distribution = "norm",
                        param.list = list(mean = meanfy[1], sd = sdfy[1]), #seed = i,
                        sort = FALSE, left.tail.cutoff = ifelse(linf == 0, .Machine$double.eps, linf), 
                        right.tail.cutoff = ifelse(lsup == 0, .Machine$double.eps, lsup), sample.method = "LHS")
  mvfy <- rbind(mvfy,vfy)
}
mvfy

当我运行它时,mvfy返回如下:

代码语言:javascript
复制
    row.names   V1
1              NA
2   vfy 395.2071

但是vfy是:

代码语言:javascript
复制
    x
1   395.2071
2   391.8786
3   412.7885
4   402.2860
5   398.0058
6   400.4628
7   401.5104
8   384.1335
9   393.5518
10  394.5893
11  400.7124
12  410.1492
13  403.1595
14  392.8852
15  398.8437
16  396.3097
17  404.3873
18  401.7541
19  407.9139
20  409.4949
21  411.9881
22  396.6371
23  405.5770
24  406.8664
25  401.2580
26  406.3994
27  405.9094
28  400.1311
29  404.1403
30  403.7265
31  393.2893
32  393.9921
33  404.2963
34  406.1437
35  403.5337
36  407.7142
37  399.5886
38  392.4123
39  403.0684
40  402.1418
41  408.2856
42  398.3144
43  415.5288
44  399.1873
45  396.9163
46  399.7843
47  395.8027
48  407.0810
49  411.4461
50  401.6290
51  397.1390
52  404.7718
53  389.5800
54  397.2889
55  400.1586
56  390.4676
57  402.5914
58  395.5590
59  400.8974
60  394.9497
61  405.1056
62  396.8843
63  399.8768
64  405.2884
65  407.4649
66  408.9783
67  398.1736
68  406.7055
69  397.5084
70  402.8599
71  402.4824
72  392.2519
73  405.8249
74  397.7427
75  386.7654
76  401.9061
77  410.4451
78  401.1301
79  394.2435
80  409.1555
81  419.4111
82  403.3644
83  404.7034
84  398.5754
85  404.9945
86  411.0002
87  399.3490
88  394.6599
89  396.1322
90  398.8645
91  391.2988
92  403.8793
93  389.1929
94  395.9191
95  401.0488
96  400.4681
97  399.4857
98  402.7026
99  398.4219
100 408.5416

我收到以下警告:在rbind(mvfy,vfy)中:结果的列数不是向量长度的倍数(arg 2)

我想把vfy加成行mvfy。我尝试过一些变体,但没有成功。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-01 16:46:06

在您的示例中,mvfy是一个矩阵,而vfy只是一个简单的向量。您不能以预期的方式rbind()矩阵和向量。注意到

代码语言:javascript
复制
rbind(matrix(1:3, ncol=1), 4:6)

行为相同,并返回一个错误。您要么希望使mvfyvfy同时成为数字向量,要么将两者结合在一起。对于后者

代码语言:javascript
复制
mvfy <- rbind(mvfy, matrix(vfy, ncol=1))

应该行得通。对于前者,您需要用

代码语言:javascript
复制
mvfy <- numeric(0)

并将值添加到

代码语言:javascript
复制
mvfy <- c(mvfy, vfy)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25608133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档