plot()函数' col ='当数据在' data ='中洗牌时,参数不起作用

时间:2017-09-17 19:09:03

标签: r

我只是注意到一个相当奇怪的现象,使用plot()函数通过公式表示法制作散点图。

比较以下两个命令:

#!/bin/bash
while read f; do
    old_path="${f%/*}"
    fn="${f##*/}"
    new_path="$old_path/USA"
    mkdir "$new_path"
    mv "$f" "$new_path/$fn"
done < <(find /maindir -type f -name "*(USA)*.zip") 

我希望同样的情节,因为第二个命令只是在绘图之前将行拖尾。但是,我们看到点的颜色也在第二行中被洗牌。有没有人见过这个?

1 个答案:

答案 0 :(得分:1)

我相信当您在plot语句中对数据进行采样时,它会根据iris$Species设置颜色映射,但应用映射的数据是重新排序的数据帧。

head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
head(iris[sample(1:nrow(iris)),])
    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
103          7.1         3.0          5.9         2.1 virginica
12           4.8         3.4          1.6         0.2    setosa
128          6.1         3.0          4.9         1.8 virginica
145          6.7         3.3          5.7         2.5 virginica
42           4.5         2.3          1.3         0.3    setosa
41           5.0         3.5          1.3         0.3    setosa

采样的更明确的映射安全地移到plot()之外:

plot(Sepal.Width ~ Sepal.Length, data=iris, col=c("red","blue","green")[iris$Species])

df1 <- iris[sample(1:nrow(iris)),]
plot(Sepal.Width ~ Sepal.Length, data=df1, col=c("red","blue","green")[df1$Species])

其中

 c("red","blue","green")[iris$Species]
  

[1]“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red” “”红色“   “红”
       [18]“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red” “   “红”
       [35]“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red”“red” “   “蓝色”        [52]“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue” “   “蓝色”        [69]“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue” “   “蓝色”        [86]“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”“blue”   “绿色”“绿色”       [103]“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”   “绿色”“绿色”       [120]“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”“green”   “绿色”“绿色”       [137]“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”“绿色”

c("red","blue","green")[df1$Species]
  

[1]“blue”“green”“red”“blue”“green”“blue”“green”“red”
  “绿色”“蓝色”“蓝色”“绿色”“红色”“绿色”“蓝色”“蓝色”“红色”   [18]“红色”“蓝色”“蓝色”“绿色”“红色”“蓝色”“绿色”“绿色”   “红色”“绿色”“蓝色”“红色”“蓝色”“绿色”“蓝色”“绿色”   “绿色”[35]“红色”“蓝色”“红色”“红色”“蓝色”“蓝色”“蓝色”“蓝色”   “blue”“blue”“red”“green”“red”“red”“blue”“red”“red”   “绿色”[52]“蓝色”“蓝色”“绿色”“红色”“绿色”“蓝色”“红色”
  “绿色”“红色”“红色”“红色”“蓝色”“绿色”“绿色”“蓝色”“红色”   “red”[69]“green”“red”“red”“green”“blue”“blue”“green”   “red”“red”“green”“green”“green”“red”“green”“red”“red”   “red”[86]“red”“blue”“green”“green”“green”“green”“green”   “红色”“蓝色”“绿色”“绿色”“蓝色”“蓝色”“蓝色”“红色”
  “绿色”“绿色”[103]“红色”“绿色”“蓝色”“红色”“红色”“绿色”   “blue”“blue”“blue”“green”“green”“red”“blue”“blue”“blue”   “blue”“blue”[120]“green”“green”“red”“red”“blue”“red”
  “blue”“blue”“green”“red”“blue”“green”“blue”“red”“blue”   “绿色”“红色”[137]“绿色”“绿色”“绿色”“绿色”“蓝色”“红色”
  “red”“blue”“green”“red”“red”“blue”“red”“red”

导致相同的情节。