.subset(col,i)中的错误:类型'符号的对象'不是子集

时间:2017-11-30 15:42:12

标签: r ggplot2 ggally

我正在尝试根据列相关性为ggpairs图表矩阵中的文本指定颜色(高相关性为红色,低相关性为蓝色):

colors <- colorRampPalette(c("blue", "red"))(100)
correlation_color <- function(data, mapping, ...) {
  cor = print(cor(data[,toString(mapping$x)], data[,toString(mapping$y)]))
  col = colors[round(abs(cor) * 100)]
  print(col)
  print(class(col))
  ggally_text(paste("Cor: ", round(cor, 2), sep = ""), aes(color = col))
}

plt = ggpairs(sales_df,
        lower = list(continuous = wrap("smooth", color='blue', size=0.5, method='loess')), diag = list(continuous = wrap("barDiag", binwidth=1, color='blue')),
        upper = list(continuous = wrap(correlation_color))
        ) + theme_light()
plt

首先,我不明白为什么我需要在使用它对数据框进行子集化之前将mapping$x强制转换为字符串。

除此之外,我的代码失败并出现以下错误:

Error in .subset(col, i) : object of type 'symbol' is not subsettable

当我用aes替换aes(color = col)时,不会发生这种情况(color =&#34; red&#34;)。我也尝试过:

ggally_text(paste("Cor: ", round(cor, 2), sep = ""), color = col)

但是这不会在文本上产生任何颜色(除了警告The plyr::rename operation has created duplicates for the following name(s): (颜色)

发生了什么事?错误/警告对我来说完全没有意义。什么是symbol类型?为什么我不能用另一个字符串替换字符串?有没有更简单的方法来实现我的目标?

修改

这是一个最小的无意义的示例数据集:

sales_df <- data.frame(X1=seq(1,9,length.out = 15), X2=1:15)

0 个答案:

没有答案