所以我有这个R脚本可以生成带有每个点标签的散点图.是这样的:
img1<-"http://blog.gettyimages.com/wp-content/uploads/2013/01/Siberian-Tiger-Running-Through-Snow-Tom-Brakefield-Getty-Images-200353826-001-628x419.jpg"
img2<-"http://blog.gettyimages.com/wp-content/uploads/2013/01/Hurricane-Sandy-Andrew-Burton-Getty-Images-154986556.jpg"
imgdata<-data.frame(c(img1,img2,img1,img2,img1,img2,img1,img2,img1,img2))
colnames(imgdata)<-"images"
txtdata<-data.frame(c("A","B","C","D","E","F","G","H","I","J"))
plotdata<-data.frame(seq(1:10),seq(11:20),txtdata,imgdata)
colnames(plotdata)<-c("var1","var2","texts","images")
ggplot(data=plotdata, aes(plotdata[,1],plotdata[,2])) +
geom_point(data=plotdata, aes(plotdata[,1],plotdata[,2])) +
geom_text(aes(label=plotdata$points,size=2, hjust=2))
Run Code Online (Sandbox Code Playgroud)
这给出了散点图,其中每个点标记为"A","B","C"......等.
我想要做的几乎是相同的,除了文本之外,我想用图像在向量或数据框的链接中标记每个点(在本例中为"imgdata").请注意,我选择这些图像只是作为例子; 我有更多,所以我无法手动下载它们.
假设您有一个包含大量列的数据框(1000个因子,每个因子有15个级别).您想创建一个虚拟变量数据集,但由于它太稀疏,您希望以稀疏矩阵格式保留虚拟变量.
我的数据集很大,步骤越少,对我来说就越好.我知道如何做上述步骤; 但我无法直接从初始数据集创建稀疏矩阵,即只有一步而不是两步.有任何想法吗?
编辑:一些评论要求进一步阐述,所以在这里:
其中X是我的原始数据集,包含1000列和50000条记录,每列有15个级别,
步骤1:使用类似代码从原始数据集创建虚拟变量;
# Creating dummy data set with empty values
dummified <- matrix(NA,nrow(X),15*ncol(X))
# Adding values to this data set for each column and each level within columns
for (i in 1:ncol(X)){colFactr <- factor(X[,i],exclude=NULL)
for (j in 1:l){
lvl <- levels(colFactr)[j]
indx <- ((i-1)*l)+j
dummified[,indx] <- ifelse(colFactr==lvl,1,0)
}
}
Run Code Online (Sandbox Code Playgroud)
第二步:将巨大的矩阵转换为稀疏矩阵,代码如下;
sparse.dummified <- sparseMatrix(dummified)
Run Code Online (Sandbox Code Playgroud)
但是这种方法仍然创造了这个临时大矩阵,这需要大量的时间和内存,因此我要求直接的方法(如果有的话).
我无法在R 3.1.1中访问许多Bioconductor软件包,对此我感到非常失望。如何从R 3.1.1降级到R 3.0.2或其他版本?
请注意,此解决方案对我来说还不够好,因为我在Bioconductor安装方面没有任何问题。