Problema con R
Supponiamo di avere due liste, negli elemnti della prima lista che chiameremo TTmax abbiamo dati relativi a misure fisiche
negli elementi relativi alla seconda lista(err) abbiamo l'errore relativo alle misure della prima lista , per esempio
come si vede alcuni elementi della prima lista non contengono elementi e quindo voglio eliminarli e poi creare un vettore che
faccia l'unione dei dati della prima lista e li metta in ordine crescente, questo si può fare in questo modo:
A questo punto vorrei creare un vettore i cui elementi rappresntano l'errore degli elementi di UT,per esempio il primo elemento di questo vettore dovrebbe rappresentare l'errore del prmo elemento di UT, solo che non so farlo...
mi potete aiutare?
grazie
negli elementi relativi alla seconda lista(err) abbiamo l'errore relativo alle misure della prima lista , per esempio
> TTmax [[1]] logical(0) [[2]] numeric(0) [[3]] numeric(0) [[4]] numeric(0) [[5]] numeric(0) [[6]] numeric(0) [[7]] numeric(0) [[8]] [1] 70.592 [[9]] [1] 38.080 70.912 [[10]] numeric(0) [[11]] numeric(0) [[12]] [1] 71.104 82.624 [[13]] [1] 82.944 [[14]] numeric(0) [[15]] numeric(0) [[16]] [1] 18.368 34.752 82.880 [[17]] [1] 18.368 23.808 34.688 66.240 82.560 [[18]] numeric(0) [[19]] numeric(0) [[20]] [1] 18.624 35.264 63.424 71.104 82.624 [[21]] [1] 18.880 35.008 71.296 83.392 [[22]] numeric(0) [[23]] numeric(0) [[24]] [1] 18.880 35.776 63.424 66.496 71.104 83.392 [[25]] [1] 63.104 71.104 [[26]] numeric(0) [[27]] numeric(0) [[28]] [1] 11.712 18.880 35.008 70.848 83.392 [[29]] [1] 18.304 35.008 72.128 83.264 [[30]] numeric(0) [[31]] numeric(0) [[32]] [1] 12.224 18.368 34.752 71.616 83.904 [[33]] [1] 12.160 18.496 71.296 83.968 [[34]] numeric(0) [[35]] numeric(0) [[36]] [1] 19.648 72.640 [[37]] [1] 18.816 [[38]] numeric(0) [[39]] [1] 11.392 [[40]] [1] 12.224 83.904 96.704 [[41]] [1] 18.176 26.048 36.544 83.776 [[42]] numeric(0) [[43]] numeric(0) [[44]] [1] 11.456 19.904 25.536 36.800 95.936 [[45]] [1] 11.584 25.984 83.584 [[46]] numeric(0) [[47]] numeric(0) [[48]] [1] 26.560 35.776 72.640 84.928 [[49]] [1] 26.496 [[50]] numeric(0) # lista errore
> err [[1]] [1] 0.064 [[2]] [1] 0.128 [[3]] [1] 0.192 [[4]] [1] 0.256 [[5]] [1] 0.32 [[6]] [1] 0.384 [[7]] [1] 0.448 [[8]] [1] 0.512 [[9]] [1] 0.576 [[10]] [1] 0.64 [[11]] [1] 0.704 [[12]] [1] 0.768 [[13]] [1] 0.832 [[14]] [1] 0.896 [[15]] [1] 0.96 [[16]] [1] 1.024 [[17]] [1] 1.088 [[18]] [1] 1.152 [[19]] [1] 1.216 [[20]] [1] 1.28 [[21]] [1] 1.344 [[22]] [1] 1.408 [[23]] [1] 1.472 [[24]] [1] 1.536 [[25]] [1] 1.6 [[26]] [1] 1.664 [[27]] [1] 1.728 [[28]] [1] 1.792 [[29]] [1] 1.856 [[30]] [1] 1.92 [[31]] [1] 1.984 [[32]] [1] 2.048 [[33]] [1] 2.112 [[34]] [1] 2.176 [[35]] [1] 2.24 [[36]] [1] 2.304 [[37]] [1] 2.368 [[38]] [1] 2.432 [[39]] [1] 2.496 [[40]] [1] 2.56 [[41]] [1] 2.624 [[42]] [1] 2.688 [[43]] [1] 2.752 [[44]] [1] 2.816 [[45]] [1] 2.88 [[46]] [1] 2.944 [[47]] [1] 3.008 [[48]] [1] 3.072 [[49]] [1] 3.136 [[50]] [1] 3.2 >
come si vede alcuni elementi della prima lista non contengono elementi e quindo voglio eliminarli e poi creare un vettore che
faccia l'unione dei dati della prima lista e li metta in ordine crescente, questo si può fare in questo modo:
UT<-sort(Reduce(union,TTmax))
A questo punto vorrei creare un vettore i cui elementi rappresntano l'errore degli elementi di UT,per esempio il primo elemento di questo vettore dovrebbe rappresentare l'errore del prmo elemento di UT, solo che non so farlo...
mi potete aiutare?
grazie
Risposte
ho risolto il problema con grande difficoltà, questo è il codice se ti interessa, in ogni caso grazie mille, sei sempre molto disponibile
#TTmax= lista con le misure #err= lista errori a<-lapply(TTmax,mean) #creo una lista i cui elementi son numeri o NaN aa<-rapply( a, f=function(x) ifelse(is.nan(x),0,x), how="replace" ) #sostituisco i NaN con 0 lunghezza<-length(aa) position<-c() for(i in 1:lunghezza) { if(aa[i]==0) {position[i]<-i} } positionn<-position[-which(is.na(position))] # le entrate di questo vettore rappresentano le entrate della lista TTmax che non # sono numeric(0) o logical(0) Er<-err[-positionn] TTT<-TTmax[-positionn] ERR<-c() UT<-c() for(i in 1:length(TTT)) { len<-length(TTT[[i]]) for(j in 1:len) { ERR<-c(ERR,Er[[i]]) } UT<-c(UT,TTT[[i]]) } # UT=vettore tempi massimi # ERR= vettore le cui entrate rappresentano l'incertezza sui tempi D<-data.frame(UT,ERR) DD<-D[order(UT),]