Home Forum Statistica con R eliminare valori da vettori di liste

Questo argomento contiene 4 risposte, ha 3 partecipanti, ed è stato aggiornato da Francesco Cabiddu Francesco Cabiddu 3 mesi, 1 settimana fa.

Stai vedendo 5 articoli - dal 1 a 5 (di 5 totali)
  • Autore
    Articoli
  • #5770

    antonuzzo
    Partecipante

    Buongiorno, scusate il disturbo, avevo già scritto l’altro giorno e pensavo di aver risolto il problema, solo che non è così, in pratica io ho delle strutture dati generate da questa funzione
    library(partitions)
    permListParts <- function (x)
    {
    f <- function(pp) {
    out <- split(seq_along(pp), pp)
    myPerms <- perms(length(out))
    apply(myPerms, 2, function(x) {
    temp <- out[x]
    class(temp) <- c(class(temp), “equivalence”)
    temp
    })
    }
    apply(setparts(x), 2, f)
    }

    parts <- permListParts(length(x))
    out <- rapply(parts, function(ii) x[ii], how=”replace”)
    dove x passato a permListParts è un vettore, in partica dal risultato out vorrei eliminare tutti i risultati di una determinata lunghezza nel mio caso diversa da 4. Avevo postato l’altro giorno una domanda simili e mi era stato risposto da Davide che mi ha aveva consigliato questa funzione
    out=lapply(out,
    function(x)
    if(length(x)==2) return(NULL) else return(x)
    )
    il tutto funziona e mi restituisce le liste corrette solo che se inserisco un valore maggiore di 3 mi da una lista nulla, anche se al suo interno ci sono dei valori con una lunghezza pari a quella inserita.

    • Questo argomento è stato modificato 3 mesi, 2 settimane fa da  antonuzzo.
    #5795

    pdeninis
    Partecipante

    Non ho letto attentamente tutto il post, ma questa linea:

    
    if(length(x)==2) return(NULL) else return(x)
    

    che vuol dire “se la lunghezza dell’argomento x è uguale a 2 restituisci NULL, altrimenti restituisci l’argomento” elimina tutti gli elementi di x la cui lunghezza è uguale a 2.

    Questo non è il comportamento che ti hai descritto, ovvero che “cancella tutti i valori di lunghezza da 3 in su”.

    Ho controllato la risposta di Davide, ma lui aveva scritto:

    if(length(x)<=2) return(x) else return(NULL)

    cioè “restituisci tutti gli x la cui lunghezza è minore o uguale a 2 ed elimina gli altri”, che è esattamente quello che ti accade, se non sbaglio.

    Proverei a modificarla per ottenere ciò che ti interessa.

    vorrei eliminare tutti i risultati di una determinata lunghezza nel mio caso diversa da 4

    Proverei a sostituire quella riga con

    
    if(length(x)!= 4) return(NULL) else return(x)
    

    length(x) != 4 vuol dire lunghezza di x not equal 4.

    Paolo

    • Questa risposta è stata modificata 3 mesi, 1 settimana fa da  pdeninis.
    • Questa risposta è stata modificata 3 mesi, 1 settimana fa da  pdeninis.
    • Questa risposta è stata modificata 3 mesi, 1 settimana fa da  pdeninis.
    • Questa risposta è stata modificata 3 mesi, 1 settimana fa da  pdeninis.
    • Questa risposta è stata modificata 3 mesi, 1 settimana fa da  pdeninis.
    #5806

    antonuzzo
    Partecipante

    buongiorno, scusa ma non avevo modificato il codice e avevo inserito quello per fare diverse prove, ho inserito il codice if(length(x)!= 4) return(NULL) else return(x), ma nonnostante ciò mi ritorna una lista di valori nulli, tutti nulli, come se i valori uguali a 4 non li trovasse

    #5807

    pdeninis
    Partecipante

    Penso che dovresti continuare l’altro post in cui ti ha risposto Davide. Credo lui abbia già capito cosa vuoi fare mentre io non ho ancora capito che vettore è il tuo out…

    #5822
    Francesco Cabiddu
    Francesco Cabiddu
    Amministratore del forum

    Ciao antonuzzo,
    mi sembra di aver capito che hai un oggetto su R (un lista?) con degli elementi (vettori?, liste?) e che vorresti creare un subset di tale oggetto dove gli elementi al suo interno hanno una lunghezza non maggiore di un certo valore.

    Potresti postare la struttura del tuo oggetto su R su cui vuoi applicare questa operazione? Scrivendo il risultato che esce in console del comando str(nome_oggetto)

Stai vedendo 5 articoli - dal 1 a 5 (di 5 totali)

Devi essere loggato per rispondere a questa discussione.