gpt4 book ai didi

r - 五的倍数的for循环

转载 作者:行者123 更新时间:2023-12-05 01:50:22 26 4
gpt4 key购买 nike

感谢@akrun,我可以运行我之前关于使用循环合并和创建表的问题。 Merge and create tables using a loop

但是,由于我的笔记本电脑只有 16GB 的内存,我无法使用代码运行大型数据集。因此,我决定不合并 100 次,而是将流程分开,并使用 for 循环逐步完成。

我打算使用 for 循环创建 20 个数据列表,但后来我找不到实现它的方法。

具体来说,我会在不使用 for 循环的情况下手动运行以下 20 行代码。

list1 <- mget(paste0("", 1:5))

list2 <- mget(paste0("", 6:10))

list3 <- mget(paste0("", 11:15))

list4 <- mget(paste0("", 16:20))

list5 <- mget(paste0("", 21:25))

...

list20 <- mget(paste0("", 96:100))

在这种情况下,我将如何编写 for 循环?

我试图找到一种方法来执行此操作(例如如下所示),但出现错误。

for(i in 1:20){
list[i] <- mget(paste0("",5*i-4:5*i))
}

在此先感谢您的帮助!

最佳答案

有多种方法可以创建列表。使用 split%/%

fulllst <- lapply(split(as.character(1:100), (1:100-1) %/% 5 + 1), mget)

或者通过用 () 包装代码来在 OP 的帖子中使用相同的代码,以避免基于运算符的优先级进行评估

# create an empty list to store the output
lstout <- vector('list', 20)
# loop over the sequence and add the `()` for `(5* i- 4)` and similarly for (5*i)
for(i in 1:20)
lstout[[i]] <- mget(as.character((5 *i -4):(5*i)))

使用print找不同

> for(i in 1:20) print((5 *i -4):(5*i))
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 11 12 13 14 15
[1] 16 17 18 19 20
[1] 21 22 23 24 25
[1] 26 27 28 29 30
[1] 31 32 33 34 35
[1] 36 37 38 39 40
[1] 41 42 43 44 45
[1] 46 47 48 49 50
[1] 51 52 53 54 55
[1] 56 57 58 59 60
[1] 61 62 63 64 65
[1] 66 67 68 69 70
[1] 71 72 73 74 75
[1] 76 77 78 79 80
[1] 81 82 83 84 85
[1] 86 87 88 89 90
[1] 91 92 93 94 95
[1] 96 97 98 99 100
> for(i in 1:20) print(5 *i -4:5*i)
[1] 1 0
[1] 2 0
[1] 3 0
[1] 4 0
[1] 5 0
[1] 6 0
[1] 7 0
[1] 8 0
[1] 9 0
[1] 10 0
[1] 11 0
[1] 12 0
[1] 13 0
[1] 14 0
[1] 15 0
[1] 16 0
[1] 17 0
[1] 18 0
[1] 19 0
[1] 20 0

即。如果我们不使用 () 则评估将是

i <- 1
(5 * i) - (4:5 * i)
[1] 1 0
# instead of
(5 * i -4):(5 * i)
[1] 1 2 3 4 5

运算符优先级在 ?Syntax 中显示

:: :::  access variables in a namespace
$ @ component / slot extraction
[ [[ indexing
^ exponentiation (right to left)
- + unary minus and plus
: sequence operator
%any% |> special operators (including %% and %/%)
* / multiply, divide
+ - (binary) add, subtract
....

关于r - 五的倍数的for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73178787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com