我有以下数据帧:
sp <- combn(c("sp1","sp2","sp3","sp4"),2)
d <- data.frame(t(sp),"freq"=sample(0:100,6))
Run Code Online (Sandbox Code Playgroud)
和两个因素
x1 <- as.factor(c("sp1","sp2"))
x2 <- as.factor(c("sp3","sp4"))
Run Code Online (Sandbox Code Playgroud)
我需要一个包含所有可能的组合返回的数据帧x1
,并x2
与freq
从数据帧 d
与该组合相关.
返回的数据框如下所示:
data.frame("X1" = c("sp1","sp1","sp2","sp2"),
"X2" = c("sp3","sp4","sp3","sp4"),
"freq" = c(4,94,46,74))
Run Code Online (Sandbox Code Playgroud)
我试过了:
sub <- d[d$X1 == x1 & d$X2 == x2,]
Run Code Online (Sandbox Code Playgroud)
但得到错误
Error in Ops.factor(d$X1, x1) : level sets of factors are different
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?
我有一个带有两个输入变量的函数
min.depth <-2
max.depth <-5
该函数产生一个图.如何将输入变量插入标题?
我试过了:
plot.a<-plot(plt.a$"Traits",plt.a$"Species",xlab="Site similarity by traits
(Tsim)",ylab="Site similarity by species (Jaccard)",
main=c("Jaccard vs. Tsim for depths",
min.depth, "to",max.depth,"m")
Run Code Online (Sandbox Code Playgroud)
虽然这确实正确插入了输入变量,但它也会导致标题堆栈如下:
Jaccard vs. Tsim的深度为
2
至
5
米
关于如何避免这种堆叠的任何想法?
我有矩阵
m <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE,dimnames = list(c("s1", "s2", "s3"),c("tom", "dick","bob")))
tom dick bob
s1 1 2 3
s2 4 5 6
s3 7 8 9
#and the data frame
current<-c("tom", "dick","harry","bob")
replacement<-c("x","y","z","b")
df<-data.frame(current,replacement)
current replacement
1 tom x
2 dick y
3 harry z
4 bob b
#I need to replace the existing names i.e. df$current with df$replacement if
#colnames(m) are equal to df$current thereby producing the following matrix
m <- matrix(1:9, …
Run Code Online (Sandbox Code Playgroud) 我有一个使用ggplot2包中的plot生成的直方图:
和使用gplots包中的textplot生成的表
如果可能的话,我想在相同的pdf或png中显示它们.
我没有运气就试过grid.arrange.还有其他建议吗?由于每个表只有5行长,我还在考虑将它作为qplot边缘的"图例"或文本框插入到图中.关于如何使这个看起来很好的任何建议?谢谢你的想法.
最后我不知道我的配色方案看起来更糟糕了......我把这个问题作为一个新问题发布了.
我在树状图中给叶子着色如下
require(graphics)
dm <- hclust(dist(USArrests[1:5,]), "ave")
df<-data.frame("State"=c("Alabama","Alaska","Arizona","Arkansas","California"), "Location"=c("South","North","West","South","West"))
color.sites<-function(dm){
dend<-as.dendrogram(dm)
plot(dend)
cols <- attributes(dend)
df$ColorGroups <- factor(df$Location)
#Set colour pallette
Location.Pal <- rainbow(nlevels(df$ColorGroups), s=0.9,v=0.9,start=0.1,end=0.9,alpha=1)
colorleaves <- function (n) {
# only apply to "leaves" in other words the labels
if(is.leaf(n)) {
i <- which(df$State == attr(n,"label"))
col.lab <- Location.Pal[[unclass(df$ColorGroups[[i]])]]
a <- attributes(n)
attr(n, "nodePar") <- c(a$nodePar, list(lab.col = col.lab))
}
n
}
xx <- dendrapply(dend, colorleaves)
plot(xx, cex=3, cex.main=2, cex.lab=5, cex.axis=1, mar=c(3,3,3,3), main="Title")
}
color.sites(dm)
Run Code Online (Sandbox Code Playgroud)
我想:1)添加一个解释颜色的图例(即橙色=北方)2)使叶子标签更大更大胆(cex.lab似乎不起作用)3)创建一个具有鲜明对比的调色板当树状图中有许多叶子和颜色时,颜色(彩虹,热量,颜色等)似乎都混合在一起.
任何意见是极大的赞赏 !
我在下面创建了以下图表 igraph
set.seed(1410)
df<-data.frame(
"site.x"=c(rep("a",4),rep("b",4),rep("c",4),rep("d",4)),
"site.y"=c(rep(c("e","f","g","h"),4)),
"bond.strength"=sample(1:100,16, replace=TRUE))
library(igraph)
df<-graph.data.frame(df)
V(df)$names <- c("a","b","c","d","e","f","g","h")
layOUT<-data.frame(x=c(rep(1,4),rep(2,4)),y=c(4:1,4:1))
E(df)[ bond.strength < 101 ]$color <- "red"
E(df)[ bond.strength < 67 ]$color <- "yellow"
E(df)[ bond.strength < 34 ]$color <- "green"
V(df)$color <- "white"
l<-as.matrix(layOUT)
plot(df,layout=l,vertex.size=10,vertex.label=V(df)$names,
edge.arrow.size=0.01,vertex.label.color = "black")
Run Code Online (Sandbox Code Playgroud)
我想显示所有顶点/节点,但只显示bond.strength> 34的边(即只有红色和黄色边).我可以通过将bond.strength <34设置为白色来控制这个,但是当我在实际数据集上完成时它不是很漂亮,因为白色边缘"穿过"其他边缘,即
有没有其他方法可以简单地控制哪些边是可见的,同时显示所有顶点?谢谢
我想在Word for Mac 2011(我坚持使用)中创建的.docx文件中显示代码片段(在R中创建).我试过插入文本框但它们只显示一页的长度,这使编辑变得困难.有什么建议?
PS我意识到之前有关MS Word的一个类似的问题,但没有一个解决方案似乎适用于Mac 2011.
我需要将通过将树状图切割成给定相似度级别而生成的聚类叠加到排序结果 (NMDS) 上。我一直在浏览 ade4 和 vegan,但没有找到任何明显的解决方案。
我目前正在使用 Primer-e(见下面的屏幕截图),但我发现图形有点有限。任何方向正确的点都非常感谢。
如何删除与r图例中的符号相交的线?看过了?传说但似乎无法找到答案..
plot.new()
legend("top",ncol=1,c("Mound reef (M)","Spur and Groove (SG)",
"Rubble Fields (RF)","Coral Walls (CW)","Mounds and rubble fields (MR)",
"Mounds, Monostand walls and Rubble (MMR)"),pch=3:8, title="Reef Types",
cex=1, lwd=2)
Run Code Online (Sandbox Code Playgroud)
我有一个矩阵与列重复字符列名称.
set.seed(1)
m <- matrix(sample(1:10,12,replace=TRUE), nrow = 3, ncol = 4, byrow = TRUE,
dimnames = list(c("s1", "s2", "s3"),c("x", "y","x","y")))
m
x y x y
s1 3 4 6 10
s2 3 9 10 7
s3 7 1 3 2
Run Code Online (Sandbox Code Playgroud)
我需要将具有相同列名的所有列合并为一列,即
m <- matrix(c(9,14,13,16,10,3), nrow = 3, ncol = , byrow = TRUE,dimnames = list(c("s1", "s2", "s3"),c("x", "y")))
x y
s1 9 14
s2 13 16
s3 10 3
Run Code Online (Sandbox Code Playgroud)
我在聚合函数中有一个简单总和的游戏,但没有任何运气.有什么建议?谢谢.