r - R中的嵌套for循环排列
问题描述
我很难尝试使用嵌套循环来正确处理所有事情。我觉得我正在初始化不必要的变量。这段代码最终给了我想要的输出,但是可以做些什么来改进呢?rep(vec[i], length(vec)) 对我来说似乎很笨拙。
我也可以想象不同的方法来解决这个排列问题,使用复制或列表,但我在如何正确设置嵌套循环和需要在这种情况下的帮助方面更加努力。
vec <- c("red", "blue", "green", "orange")
col2 <- vector()
final <- data.frame(col1 =NULL, col2 = NULL)
for (i in 1:length(vec)){
for (j in 1:length(vec)){
col1 <- rep(vec[i], length(vec))
col2[j] <- vec[j]
temp.df <- cbind(col1, col2)
}
final <- rbind(final, temp.df)
}
final
col1 col2
1 red red
2 red blue
3 red green
4 red orange
5 blue red
6 blue blue
7 blue green
8 blue orange
9 green red
10 green blue
11 green green
12 green orange
13 orange red
14 orange blue
15 orange green
16 orange orange
解决方案
因此,所需的最终结果是具有两种颜色的每种组合的 data.frame,对吗?
library(tidyverse)
tibble() %>%
expand(
col1=c("red", "blue", "green", "orange"),
col2=c("red", "blue", "green", "orange")
)
# A tibble: 16 x 2
col1 col2
<chr> <chr>
1 blue blue
2 blue green
3 blue orange
4 blue red
5 green blue
6 green green
7 green orange
8 green red
9 orange blue
10 orange green
11 orange orange
12 orange red
13 red blue
14 red green
15 red orange
16 red red
作为一般的经验法则,如果您在 R 中使用循环,通常会有更好的(即更有效和更简洁)的方法。
推荐阅读
- c++ - 使用 Cmake 将 waLBerla 链接到我自己的代码
- amazon-s3 - Gatsby watchMode 和 overlayDrafts 在 S3 静态网站上不起作用
- r - dim(data)[-1] 和 dim(data)[1] 有什么区别
- javascript - React Navigation V6 中的奇怪行为
- mongodb - MongoTypeConversionException:即使显式架构不包含 NullTypes,也无法使用 Mongo Spark 连接器将 STRING 转换为 NullType
- python - Kivy:防止开关在按下时翻转
- c# - .NET 5 HttpClient 无法获取 html 内容页面 - http 500
- google-sheets - Google Studio Count Distinct 返回错误值
- javascript - 为什么我的按钮单击侦听器在 chrome 扩展中不起作用?
- java - 我有华为站点工具包错误代码:10017