【发布时间】:2021-01-29 09:32:05
【问题描述】:
假设我有这个向量 v:
v = seq(1,30,1)
我写了这个简单的循环:
for(i in v) {
print(i)
}
但是,我想编写一个循环,及时为我提供 1:2、3:4、5:6、7:8 等。然后我会得到:
[1] 1,2
[1] 3,4
[1] 5,6
[1] 7,8
...
谁能帮帮我?
谢谢!
【问题讨论】:
假设我有这个向量 v:
v = seq(1,30,1)
我写了这个简单的循环:
for(i in v) {
print(i)
}
但是,我想编写一个循环,及时为我提供 1:2、3:4、5:6、7:8 等。然后我会得到:
[1] 1,2
[1] 3,4
[1] 5,6
[1] 7,8
...
谁能帮帮我?
谢谢!
【问题讨论】:
也许您可以生成v,步骤为 2。
v = seq(1,30,2)
for(i in v) {
cat(paste(i, i + 1, sep = ','), '\n')
}
#1,2
#3,4
#5,6
#7,8
#9,10
#11,12
#13,14
#...
【讨论】:
i 它是数字类型,因此您可以将其用于其他目的,例如子集或任何其他数学运算像往常一样。
如果你想保持你的方法,试试这个:
for(i in v[-length(v)]) {
print(c(i, i+1))
}
[1] 1 2
[1] 2 3
[1] 3 4
...
【讨论】:
将i 添加到子集。
for(i in v) {
print(v[0:1 + i])
}
# [1] 1 2
# [1] 2 3
# [1] 3 4
# [1] ...
或者你也可以考虑这个:
cbind(v[-length(v)], v[-1])
# [,1] [,2]
# [1,] 1 2
# [2,] 2 3
# [3,] 3 4
# [4,] 4 5
# [5,] 5 6
# [6,] ...
【讨论】:
需要更新打印命令并使用方法范围
https://www.w3schools.com/python/ref_func_range.asp
for i in range(0,len(v)-1,2):
print(str(v[i])+","+str(v[i+1]))
这样你应该得到
1,2
3,4
5,6
7,8
...
【讨论】:
试试这个
> for(i in v) if (i%%2) print(c(i,i+1))
[1] 1 2
[1] 3 4
[1] 5 6
[1] 7 8
[1] 9 10
[1] 11 12
[1] 13 14
[1] 15 16
[1] 17 18
[1] 19 20
[1] 21 22
[1] 23 24
[1] 25 26
[1] 27 28
[1] 29 30
【讨论】: