我正在学习R语言,并且正在做一个小项目。我制作了一个数据表,并在其中填充了0到99之间的随机数。我想对其进行填充,以使表中的每一行(总共30列,共5列)的总和为100。现在,每一行都有随机数在0到99之间,但行总和不等于100。
这是我正在学习的R语言,所以我对语法不是很熟悉。我尝试了data.frame复制和矩阵,但是它们没有用。
这是我尝试过的(四种不同方式):
1)
> data.frame(replicate(5,sample(0:99, rowsum <= 100,30,rep=FALSE)))
2)
> data.frame(replicate(5,sample(0:99,30,rep=FALSE)))
3)
> data.frame(replicate(30,sample(0:99,rep=FALSE)))
4)
> nrow <- 30
> ncol <- 5
> mat <- matrix(nrow = nrow, ncol = ncol)
> i <- 1
> while (i <= nrow) {
+ x <- runif(1, 0, 100)
+ if (sum(x) <= 100) {
+ mat[i, ] <- x
+ i <- i + 1
使用方法1,我收到此错误:
rowsum <100中的错误:比较(3)仅适用于原子类型和列表类型
使用方法#2和#3,我得到了这一点(每行中的数字确实在0到100之间,但总和不超过100):
X1 X2 X3 X4 X5
1 26 0 32 52 10
2 57 81 9 31 77
3 96 32 31 16 17
4 0 87 79 13 29
5 94 76 87 60 36
6 91 88 88 88 60
7 53 35 4 2 62
8 97 10 22 83 81
9 16 36 83 62 46
10 45 14 54 90 12
11 78 61 58 84 52
12 50 51 13 77 43
13 52 59 70 54 32
14 29 94 49 34 33
15 24 20 39 64 57
16 76 91 21 36 39
17 33 31 1 93 59
18 38 70 68 48 38
19 65 2 46 67 56
20 9 16 5 37 16
21 6 65 61 95 91
22 43 98 52 61 44
23 42 68 80 69 63
24 87 47 90 12 74
25 98 99 40 53 50
26 67 85 42 46 25
27 55 80 30 41 30
28 62 21 86 0 95
29 28 46 65 68 48
30 72 4 72 50 58
使用方法4,出现此错误:
sum(row)中的错误:参数的“类型”(关闭)无效
任何帮助将不胜感激。谢谢。