R根据区间分配随机变量

R根据区间分配随机变量,r,R,将随机变量分配给两个变量的交互作用的最佳方法是什么?例如,在此代码中: colors <- ('blue', 'green', 'red') df <- data.frame(A = c(0,0,0,0,1,1,1,1), B = c(0,0,1,1,1,1,0,0)) 如果我了解您的需求,这应该可以: df$RandColor <- sample(cols, length(levels(interaction(df))), replace

将随机变量分配给两个变量的交互作用的最佳方法是什么?例如,在此代码中:

colors <- ('blue', 'green', 'red')
df <- data.frame(A = c(0,0,0,0,1,1,1,1),
                  B = c(0,0,1,1,1,1,0,0))

如果我了解您的需求,这应该可以:

df$RandColor <- sample(cols, length(levels(interaction(df))), replace=T)[interaction(df)]

df$RandColor如果我了解您想要什么,这应该可以:

df$RandColor <- sample(cols, length(levels(interaction(df))), replace=T)[interaction(df)]
df$RandColor您可以尝试:

colors[as.integer(interaction(df,drop=TRUE)) %% length(colors) +1]
这样,每个组合将始终具有相同的颜色(如果它在
df
中多次出现),但如果
颜色的长度小于组合的数量,则许多组合将具有相同的颜色。

您可以尝试:

colors[as.integer(interaction(df,drop=TRUE)) %% length(colors) +1]

这样,每一个组合都将具有相同的颜色(如果在<代码> df中出现一次以上),但是如果“代码>颜色< /代码>的长度小于组合的数量,则许多组合将具有相同的颜色。

您认为<代码> a=1,b=0</c> >与<代码> a=0,b=1 < /代码>相同。因为你只列出了三种颜色,不是四种。我试图编辑这个问题,使它更明确。我知道我列出了3种颜色。每个组合的颜色都需要不同。在大版本中,将有数以百万计的AB组合,但只有13种颜色。类似于
颜色[as.integer(interaction(df,drop=TRUE))%%长度(colors)+1]
?我在想一些基本上像@nicola建议的东西,但我感到困惑,因为我不明白如果有数百万种组合,但只有13种颜色,那么每个组合的颜色怎么会不同。这两个语句对我来说似乎是矛盾的。你认为<代码> a=1,b=0 < /C> >与<代码> a=0,b=1 < /代码>相同。因为你只列出了三种颜色,不是四种。我试图编辑这个问题,使它更明确。我知道我列出了3种颜色。每个组合的颜色都需要不同。在大版本中,将有数以百万计的AB组合,但只有13种颜色。类似于
颜色[as.integer(interaction(df,drop=TRUE))%%长度(colors)+1]
?我在想一些基本上像@nicola建议的东西,但我感到困惑,因为我不明白如果有数百万种组合,但只有13种颜色,那么每个组合的颜色怎么会不同。这两种说法在我看来似乎相互矛盾。