我想从R中的3:50开始制作一个向量,看起来像
3 4 4 5 6 6 7 8 8 .. 50 50
我想在for循环中使用for循环,但它没有完成我想要的操作。
f <- c()
for (i in 3:50) {
for(j in 1:2) {
f = c(f, i)
}
}
怎么了
使用该rep
功能,以及使用循环逻辑索引的可能性...[c(TRUE, FALSE, TRUE, TRUE)]
rep(3:50, each = 2)[c(TRUE, FALSE, TRUE, TRUE)]
## [1] 3 4 4 5 6 6 7 8 8 9 10 10 11 12 12 13 14 14 15 16 16 17 18 18 19
## [26] 20 20 21 22 22 23 24 24 25 26 26 27 28 28 29 30 30 31 32 32 33 34 34 35 36
## [51] 36 37 38 38 39 40 40 41 42 42 43 44 44 45 46 46 47 48 48 49 50 50
如果将逻辑向量(TRUE
/ FALSE
)用作索引(inside [
]
),则aTRUE
导致选择相应的元素,而aFALSE
导致省略。如果逻辑索引向量(c(TRUE, FALSE, TRUE, TRUE)
)短于索引向量(rep(3:50, each = 2)
在您的情况下),则索引向量将被重新格式化。
还有一个注意事项:每当您使用R代码时
x = c(x, something)
要么
x = rbind(x, something)
或类似的方法,您在R中采用了类似C的编程风格。这使您的代码异常复杂,如果使用大型(例如200MB +)数据集,可能会导致性能降低和内存不足的问题。R旨在为您节省那些对数据结构进行低级操作的麻烦。
在R Inferno圈子2:生长的物体中阅读有关the嘴及其惩罚的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句