<åt sidan class = "s-meddelande s-meddelande__info js-post-meddelande mb16" roll = "status ">
Stängd. Denna fråga är utanför ämnet . För närvarande accepteras inte svar.
Kommentarer
- Vad är frågan exakt? Vill du (-0.921,0.389593) som en numerisk vektor?
Svar
Detta beror på att du har läst siffrorna som faktorer; om du använder read.table
, försök med header=T
eller omstrukturerar data innan du läser. Något exempel på filen bör vara till hjälp för att lösa den.
Lösning skulle vara att först konvertera faktorer till strängar med as.character
och sedan tillbaka till siffror med as.numeric
.
Redigera: Koden fungerar för angivet exempel:
readLines("<filename>")->z read.table(textConnection(z[-grep("V",z)]))
Kommentarer
- @mbq Eller använd argumentet
colClasses
iread.table()
? - @ chl Möjligen; beror på hur dessa data ser ut.
- " Detta beror på att du har läst siffrorna som faktorer; om du använder read.table, försök header = T eller omstrukturera data innan du läser. Något exempel på filen bör vara till hjälp för att lösa det. " nop. " Lösning skulle vara att först konvertera faktorer till strängar med hjälp av som.karaktär och sedan tillbaka till siffror med as.numeric. " nop. samma resultat.
- @kwak – ta bort de " V1 V2 … " innan du gör något. as.numeric vann ' t arbete med okonverterbara element i vektor.
- @mbq: > som gjorde tricket . Jag förväntade mig något annat.
Svar
Skulle det hjälpa?
> a <- as.data.frame(matrix(scan("1.txt", what="character", na.strings=c("NA",paste("V",1:6,sep=""))), nc=13, byrow=T)) > class(a[,1]) [1] "factor" > for (i in 1:ncol(a)) a[,i] <- as.numeric(as.character(a[,i])) > class(a[,1]) [1] "numeric" > summary(a) # should work here
Hur du importerar data spelar ingen roll så mycket. Jag tror att den kritiska delen om att konvertera värde som tecken sedan som numeriskt (detta gör det möjligt att konvertera nivåer av en faktor till deras numeriska motsvarigheter) .
Kommentarer
- du kan använda data.matrix () för den stat.ethz. ch / R-manual / R-devel / library / base / html / …