在R中绘制相关矩阵
我有一个包含矩阵的csv文件:在R中绘制相关矩阵,r,plot,R,Plot,我有一个包含矩阵的csv文件: version getSize() length() ... power 0 23000 23421 0.8 0 .. .. .. 1 .. .. .. 1 .. .. .. 我希望通过对列应用均值函数的类似版本进行聚合。列太多,无法写入它们。我还想计算相关矩阵,并在图的两侧绑定
version getSize() length() ... power
0 23000 23421 0.8
0 .. .. ..
1 .. .. ..
1 .. .. ..
我希望通过对列应用均值函数的类似版本进行聚合。列太多,无法写入它们。我还想计算相关矩阵,并在图的两侧绑定幂列。我的代码是:
matrix <- read.csv("/home/francesco/University/UoA/matrix.csv", header=TRUE, sep=",", fileEncoding="windows-1252")
power <- matrix[,"power"]
binded <- cbind(matrix,power)
aggregated <- aggregate(. ~ version, data = binded, mean)
corMatrix <- cor(aggregated, method="spearman")
library(lattice)
levelplot(corMatrix)
matrix.csv的简短摘录如下:
version,native_drawBitmap,nPrepareDirty,nDrawDisplayList,startGC,power
00083,8,88,308,12,0.8967960131052847
00083,0,176,404,1,0.867644513259528
00084,8,88,307,10,0.8980234065469381
00084,0,181,408,1,0.871799879659241
有人知道我做错了什么
提前感谢好吧,有了您的示例数据,
native\u drawBitmap
列将成为所有4个。因为这没有方差,所以无法计算与任何其他变量的成对相关性,从而得到错误。如果你不写这个专栏,它会有用的。这里有一个例子
#sample data in friendly copy/paste-able format
mm<-data.frame(
version = c(83, 83, 84, 84),
native_drawBitmap = c(8, 0, 8, 0),
nPrepareDirty = c(88, 176, 88, 181),
nDrawDisplayList = c(308, 404, 307, 408),
startGC = c(12, 1, 10, 1),
power = c(0.896796013105285, 0.867644513259528,
0.898023406546938, 0.871799879659241)
)
# these are not needed and don't make sence. Why are you
#trying to re-add the column from mm back onto mm?
# power <- mm[,"power"]
# binded <- cbind(mm,power)
aggregated <- aggregate(. ~ version, data = mm, mean)
#error
corMatrix <- cor(aggregated, method="spearman")
#no error
corMatrix <- cor(aggregated[,-2], method="spearman")
#友好复制/粘贴格式的示例数据
mmA一些指针,不要使用保留字(如矩阵)来命名对象/变量。除非您确定所有变量都是数字,否则不要使用cbind
。至于警告,你的cor电话结果是NA吗?它告诉你变量的方差为零。如果您粘贴了一些数据,那么我们可以提供更好的帮助。在请求帮助时,做出正确的选择是很重要的。您不必(也不应该)发布所有数据。尽可能少地发布,以重新创建您得到的确切错误。有关创建好的示例的更多信息,请参阅链接文章。矩阵很大,我甚至无法粘贴一行。我已经发布了这张矩阵的几行剪辑。希望这是有用的。@infominer:我没有得到那一行的输出,那么我认为结果是好的。我有17000列。我想这是不可行的。您知道如何自动放弃没有变量的列吗?感谢您可以查找范围非常小的列badcols您还可以计算方差并排除方差为零的列nearZeroVarcols@MrFlick:这些命令给了我以下错误:错误!badcols:无效参数type@user3657495对不起,那应该是sapply
,而不是lappy
。
#sample data in friendly copy/paste-able format
mm<-data.frame(
version = c(83, 83, 84, 84),
native_drawBitmap = c(8, 0, 8, 0),
nPrepareDirty = c(88, 176, 88, 181),
nDrawDisplayList = c(308, 404, 307, 408),
startGC = c(12, 1, 10, 1),
power = c(0.896796013105285, 0.867644513259528,
0.898023406546938, 0.871799879659241)
)
# these are not needed and don't make sence. Why are you
#trying to re-add the column from mm back onto mm?
# power <- mm[,"power"]
# binded <- cbind(mm,power)
aggregated <- aggregate(. ~ version, data = mm, mean)
#error
corMatrix <- cor(aggregated, method="spearman")
#no error
corMatrix <- cor(aggregated[,-2], method="spearman")