我是一名生物学家,但几年前我不得不教自己python和R在不同的地方工作。在我目前的工作中出现了一种情况,R对我来说非常有用,所以我拼凑了一个程序。令人惊讶的是,它完全符合我的要求,除了它生成的图形在开始时有一个额外的条形。 !
我没有输入与第一个栏相对应的数据:
我希望这是我如何设置绘图参数的一些简单错误。可能是因为我使用的是剧情而不是箱形图?它是否正在绘制标题? 更令人担忧的是,在阅读和合并我的3个数据框架时,我可能会创建某种工件数据,这也会影响统计测试,让我非常难过,尽管我看不到类似的东西。当我把矩阵写入文件时。 我非常感谢任何帮助!
这里是它的样子,然后是它调用的函数(在另一个脚本中)。 (我真的不是程序员,所以如果下面的代码很糟糕,我很抱歉。)目标是将我们的数据(在csv的第10-17列中)与大表中的所有数据进行比较临床数据依次。然后,如果存在显着的相关性(p值小于.05),则将两者相互对比。这为我提供了一种快速的方法来查找是否有值得在这个大数据集中进一步研究的东西。
first <- read.csv(labdata)
second <- read.csv(mrntoimacskey)
third <- read.csv(imacsdata)
firsthalf<-merge(first,second)
mp <-merge(firsthalf, third, by="PATIENTIDNUMBER")
setwd(aplaceforus)
pfile2<- sprintf("%spvalues", todayis)
setwd("fulldataset")
for (m in 10:17) {
n<-m-9
pretty= pretties[n]
for (i in 1:length(colnames(mp))) {
tryCatch(sigsearchA(pfile2,mp, m, i, crayon=pretty), error= function(e)
{cat("ERROR :", conditionMessage(e), "\n")})
tryCatch(sigsearchC(pfile2,mp, m, i, crayon=pretty), error= function(e)
{cat("ERROR :", conditionMessage(e), "\n")})
}
}
sigsearchA<-function(n, mp, y, x, crayon="deepskyblue"){
#anova, plots if significant. takes name of file, name of database,
#and the count of the columns to use for x and y
stat<-oneway.test(mp[[y]]~mp[[x]])
pval<-stat[3]
heads<-colnames(mp)
a<-heads[y]
b<-heads[x]
ps<-c(a, b, pval)
write.table(ps, file=n, append= TRUE, sep =",", col.names=FALSE)
feedback<- paste(c("Added", b, "to", n), collapse=" ")
if (pval <= 0.05 & pval>0) {
#horizontal lables
callit<-paste(c(a,b,".pdf"), collapse="")
val<-sprintf("p=%.5f", pval)
pdf(callit)
plot(mp[[x]], mp[[y]], ylab=a, main=b, col=crayon)
mtext(val, adj=1)
dev.off()
#with vertical lables, in case of many groups
callit<-paste(c(a,b,"V.pdf"), collapse="")
pdf(callit)
plot(mp[[x]], mp[[y]], ylab=a, main=b,las=2,cex.axis=0.7, col=crayon)
mtext(val, adj=1)
dev.off()
}
print(feedback) }
graphics.off()
答案 0 :(得分:1)
如果没有可重复的示例,我不能绝对肯定,但它看起来像你的情节中的x变量(让我们称之为x
,让我们假设你的数据框被称为df
)至少一行空字符串(""
)或空格字符(" "
)和x
也被编码为一个因子。即使您从数据框中删除了所有""
值,该值的级别仍将是因子编码的一部分,并将以图形显示。要删除关卡,请执行df$x = droplevels(df$x)
,然后再次运行您的绘图。
为了说明,这是一个内置iris
数据框的类似示例:
# Shows that Species is coded as a factor
str(iris)
# Species is a factor with three levels
levels(iris$Species)
# There are 50 rows for each level of Species
table(iris$Species)
# Three boxplots, one for each level of Species
boxplot(iris$Sepal.Width ~ iris$Species)
# Now let's remove all the rows with Species = "setosa"
iris = iris[iris$Species != "setosa",]
# The "setosa" rows are gone, but the factor level remains and shows up
# in the table and the boxplot
levels(iris$Species)
table(iris$Species)
boxplot(iris$Sepal.Width ~ iris$Species)
# Remove empty levels
iris$Species = droplevels(iris$Species)
# Now the "setosa" level is gone from all plots and summaries
levels(iris$Species)
table(iris$Species)
boxplot(iris$Sepal.Width ~ iris$Species)