Considerare i seguenti dati, in cui la colonna sinistra rappresenta un bit (1 o 0) e la colonna destra rappresenta il numero di microsecondi che osserviamo il bit.Come posso tracciare i dati di onda quadra in R?
0 664
1 63
0 404
1 544
0 651
1 686
0 507
1 1155
0 664
1 271
0 456
1 2763
0 664
1 115
0 456
1 4010
0 664
1 63
0 351
1 3855
Vorrei tracciare questi dati tale che vi sia una linea orizzontale a 0 con una larghezza di 664, seguita da un luogo ad una linea orizzontale 1 con una larghezza di 63, seguita da una caduta a una linea orizzontale a 0 con una larghezza di 404 e così via.
Esiste un efficiente e un modo diretto per tracciare questo in R che non implica il confronto manuale con i limiti?
Ecco il mio codice corrente per fare ciò che è estremamente inefficiente e ingenuo, quindi spero che ci sia un modo migliore.
args <- commandArgs(trailingOnly = TRUE)
data = read.table(args[1])
current = 1
sumA = 0
pf = function(x) {
if (x < sumA) {
return(data[current,1])
}
for (i in current: length(data[,1])) {
sumA <<- sumA + data[i,2]
if (x < sumA) {
current <<- i + 1
return(data[i,1])
}
}
return("OUT OF BOUNDS")
}
cumSum = colSums(data)[[2]]
print(cumSum - 1);
h = Vectorize(pf)
plot(h, 1, cumSum-1, n=cumSum-1, lwd=0.001, xlim=c(0,cumSum-1))
Il [ 'comando plot' con' type' bandiera impostato a 's' o' S'] (https: // stat .ethz.ch/R-manual/R-devel/library/graphics/html/plot.html) dovrebbe interessarti. _ "I due tipi di step differiscono nella loro preferenza xy: passando da (x1, y1) a (x2, y2) con x1
dfri
@dfri, ci penserò su. Grazie! – merlin2011
@dfri, Perché hai eliminato la tua risposta? Stavo per provarlo. – merlin2011