簡體   English   中英

從 R 中值遞增的重復向量創建 dataframe

[英]Create dataframe from repeating vectors with increasing values in R

我正在努力解決可能會變得非常容易的事情。 我想要的是一些簡短而有效的代碼來創建 dataframe ,其中每列由 V1、V1 * 2、V1 * 3 等組成,直到達到設定的列數。

例如,如果我的 V1 是這樣的:

V1=rep(10000,1000)

我想要一個代碼來自動生成其他列,例如 V2 和 V3

V2=V1*2
V3=V1*3

並在 dataframe 中將它們綁定在一起以給出

d=data.frame(V1,V2,V3)
d

這應該用循環來完成嗎? 嘗試了很多東西,但不是最擅長循環的,現在我感覺很卡。

理想情況下,我希望我的向量 V1 是:

V1=rep(10000,10973)

並形成一個17列的dataframe。 謝謝!

使用sapply創建多個列。 在這里,我創建了 17 列,其中 1 到 10 依次乘以 1、2、...、17。使用as.data.frame轉換為data.frame object。

sapply(1:17, function(x) x * 1:10) |>
   as.data.frame()

output

   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17
1   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17
2   2  4  6  8 10 12 14 16 18  20  22  24  26  28  30  32  34
3   3  6  9 12 15 18 21 24 27  30  33  36  39  42  45  48  51
4   4  8 12 16 20 24 28 32 36  40  44  48  52  56  60  64  68
5   5 10 15 20 25 30 35 40 45  50  55  60  65  70  75  80  85
6   6 12 18 24 30 36 42 48 54  60  66  72  78  84  90  96 102
7   7 14 21 28 35 42 49 56 63  70  77  84  91  98 105 112 119
8   8 16 24 32 40 48 56 64 72  80  88  96 104 112 120 128 136
9   9 18 27 36 45 54 63 72 81  90  99 108 117 126 135 144 153
10 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170

在您的情況下,您需要:

sapply(1:17, function(x) x * rep(10000, 10973)) |>
  as.data.frame()

我們可以使用outer

as.data.frame( outer(1:10, 1:17))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM