2013-07-22 2 views
1

У меня есть цикл for, который по какой-то причине игнорируется при добавлении дополнительной строки кода. Я проверил линию кода самостоятельно и цикл for независимо, и оба работают как ожидалось.Петля в R игнорируется программой при определенных обстоятельствах

Вот код:

onestar <- 0 
twostar <- 0 
threestar <- 0 
fourstar <- 0 
paste(ccdata[1,3],"*") 
for (i in 1:ncol(ccdata)) 
{ 
    for (j in 1:nrow(ccdata)){#iterate down the list 
     cat(ccdata[j,i]) 
     if (ccdata[j,i]<=0.05){ 
      onestar <- onestar+1 
      x <- paste(ccdata[j,i],"*") 
      ccdata[j,i]<-x 
      cat(ccdata[j,i]) 
      ccdata[j,i]<-paste(ccdata[j,i],"*") 
     } 
    } 
    cat("loopsruns") 
} 
onestar 

У меня возникли проблемы с ccdata[j,i]<-paste(ccdata[j,i],"*") линии - когда я удалить его, цикл работает отлично. Когда он включен, программа просто игнорирует цикл.

В качестве альтернативы, если есть упаковка для обозначения вещей в соответствии со статистической значимостью, это было бы очень полезно - я искал ее, но не смог найти.

+0

Две точки: 1. линия 'пасты (ccdata [1,3], "*")' не сохранение результата в любом месте; 2. строка 'ccdata [j, i] <- paste (ccdata [j, i]," * ")' преобразует матрицу 'ccdata' в' character', вызывая сравнение 'ccdata [j, i] <= 0,05 'to do done * lexically *, т. е. преобразование первого' 0.05' в строку '" 0.05 "'. –

+0

Ах, большое вам спасибо, я не понял, что это было лексическое сравнение, которое также решает некоторые проблемы, которые я получил позже. – orange1

ответ

1

Вы можете использовать функцию symnum для создания меток в соответствии со статистической значимостью. Например, если pvals является вектором р-значений:

symnum(pvals, cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), 
     symbols = c("***", "**", "*", ".", " ")) 
Смежные вопросы