Mai mult
Creați un gol de date.cadru
Am'm încercarea de a inițializa o data.cadru fără rânduri. Practic, vreau să specificați tipurile de date pentru fiecare coloană și numele ei, dar nu au nici rânduri creat ca un rezultat.
Cel mai bun mi'am fost în stare să facă până acum este ceva de genul:
df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"),
File="", User="", stringsAsFactors=FALSE)
df <- df[-1,]
Care creează o data.cadru cu un singur rând care conține toate tipurile de date și nume de coloană am vrut, dar creează, de asemenea, inutil rând, care apoi trebuie să fie eliminate.
Există o modalitate mai bună de a face acest lucru?
446
16
Doar inițializa cu gol vectori:
Dacă tu deja existente cadru de date, las's spun " df " care are coloane pe care doriți, atunci puteți crea doar un gol cadru de date prin eliminarea tuturor rânduri:
Observați că " df " conține încă datele, dar
empty_df
nu't.Am găsit această întrebare în căutarea pentru modul de a crea o nouă instanță cu rânduri goale, astfel încât cred că ar putea fi utile pentru unii oameni.
Poți să o faci fără a preciza tipuri de coloane
Ai putea folosi citit.masa cu un șir gol pentru intrare "text", după cum urmează:
Cel mai eficient mod de a face acest lucru este de a utiliza "structura" pentru a crea o listă care are clasa
"de date.cadru"
:Pentru a pune acest lucru în perspectivă, comparativ cu în prezent răspunsul acceptat, aici's-o simplă referință:
Doar declare
atunci când încercați să
rbind
prima linie se va crea coloaneDacă sunteți în căutarea pentru dificultati :
așa că don't nevoie pentru a specifica numele coloanelor separat. Veți obține coloana implicit de tip logic până când umple cadru de date.
Am creat gol cadru de date folosind următorul cod
și a încercat să lege câteva rânduri pentru a popula la fel după cum urmează.
Dacă doriți să creați un gol de date.cadru dinamic cu nume (colnames într-o variabilă), acest lucru poate ajuta:
A creați un gol cadru de date, trece în numărul de rânduri și coloane necesare în următoarea funcție:
Dacă tu nu't mintea nu-specificarea tipurilor de date în mod explicit, puteți face în acest fel:
Dacă doriți să declare astfel de date.cadru cu mai multe coloane, se'll fi, probabil, o durere de tip coloana clase de mână. Mai ales dacă puteți face uz de
rep
, această abordare este ușor și rapid (aproximativ 15% mai rapid decât alte soluții care pot fi generalizate de genul asta):Dacă se dorește coloana clase sunt într-un vector
colClasses
, puteți face următoarele:lapply
va avea ca rezultat într-o listă de lungime dorită, fiecare element din care este pur și simplu un gol tastat vector canumeric () " sau " număr întreg()
.setDF
convertește această "listă", prin referire la un date.cadru`.setnames
adaugă numele dorite de referință.Viteza de comparație:
Prin Utilizarea de date.tabel putem specifica tipurile de date pentru fiecare coloana.
Dacă aveți deja un dataframe, puteți extrage metadatele (numele coloanelor și tipuri) de la un dataframe (de exemplu, dacă se controlează un BUG care este numai a declanșat cu anumite intrări și nevoie de un gol dummy Dataframe):
`` colums_and_types <- sapply(df, clasa)
imprimeuri: "c('col1', 'col2')"
print(dput(ca.personajul(nume(colums_and_types))))
imprimeuri: "c('integer', 'factor')"
dput(ca.caracter(ca.vector(colums_and_types))) ``
Și de a folosi apoi citesti.masa` pentru a crea gol dataframe
citit.masa(text = "", colClasses = c('integer', 'factor'), col.nume = c('col1', 'col2'))
Spune-ți coloana nume sunt dinamice, puteți crea un rând liber-numit matrice și transformarea acesteia într-un cadru de date.
Această întrebare nu't a aborda în mod special preocupările mele (prezentate aici), dar în cazul în care cineva vrea să facă acest lucru cu un parametrizate numărul de coloane și fără constrângere:
Ca divibisan membre în legătură întrebare,