2016-06-24 2 views
2

Я биолог, но мне пришлось научить себя python и R, работающим в разных местах несколько лет назад. На моей нынешней работе возникла ситуация, в которой R был бы действительно полезен, и поэтому я объединил программу. Удивительно, но он делает то, что мне хотелось бы, ИСКЛЮЧИТЕЛЬНО, что графики, которые он генерирует, имеют дополнительный батон в начале. !Где эти дополнительные данные? (на графике R)

Я не ввел никаких данных, чтобы соответствовать этой первой строке:

I've entered no data to correspond to that first bar

Я надеюсь, что это какая-то простая ошибка в том, как я установил параметры сюжета. Может быть, потому, что я использую сюжет вместо boxplot? Является ли это построением заголовков? Больше беспокойства заключается в том, что при чтении и слиянии моих трех кадров данных я создаю какие-то артефактные данные, которые также повлияют на статистические тесты и сделают меня очень грустными, хотя я не вижу ничего подобного, когда я напишите матрицу в файл. Я очень благодарен за любую помощь!

Вот как он выглядит, а затем функция, которую он вызывает (в другом скрипте). (Я действительно не программист, поэтому приношу извинения, если следующий код несчастен.) Цель состоит в том, чтобы сравнить наши данные (которые находятся в столбцах 10-17 csv) со всеми данными на большом листе клинические данные по очереди. Затем, если существует значительная корреляция (значение p меньше 0,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() 
+1

Может быть, есть некоторые 'значения NA'? – ytk

+2

Добро пожаловать в переполнение стека! Можете ли вы включить данные, которые предоставят нам [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? –

+0

Несколько наборов имеют значения NA. будут ли они безостановочными? – labrat

ответ

1

Я не могу быть абсолютно уверенным без воспроизводимым примера, но он выглядит как х-переменной в вашем участке (назовем его 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) 
+0

Спасибо! Я пробовал это, но имел ту же проблему. В конце концов, я думаю, что проблема в том, что некоторые ячейки были пустыми, а некоторые - NA. Я установил его вручную, заменив все пробелы на NA в исходных электронных таблицах. – labrat

Смежные вопросы