Usa readLines
con 2 per il limite, analizzarlo, paste0
insieme, quindi leggere con read.table
con skip =2
e header=FALSE
(impostazione predefinita). Completare il processo di via con l'assegnazione dei nomi di colonna:
dat <- "trt biomass yield
crop Mg/ha bu/ac
C2 17.76 205.92
C2 17.96 207.86
CC 17.72 197.22
CC 18.42 205.20
CCW 18.15 200.51
CCW 17.45 190.59
P 3.09 0.00
P 3.34 0.00
S2 5.13 49.68
S2 5.36 49.72
"
Si sarebbe probabilmente utilizzare un file come argomento, ma utilizzando l'argomento text
alle funzioni di lettura che rende questo più autosufficiente:
readLines(textConnection(dat),n=2)
#[1] "trt\tbiomass\tyield" "crop\tMg/ha\tbu/ac"
head2 <- read.table(text=readLines(textConnection(dat),n=2), sep="\t", stringsAsFactors=FALSE)
with(head2, paste0(head2[1,],head2[2,]))
# [1] "trtcrop" "biomassMg/ha" "yieldbu/ac"
joinheadrs <- with(head2, paste0(head2[1,],head2[2,]))
newdat <- read.table(text=dat, sep="\t",skip=2)
colnames(newdat)<- joinheadrs
#-------------------
> newdat
trtcrop biomassMg/ha yieldbu/ac
1 C2 17.76 205.92
2 C2 17.96 207.86
3 CC 17.72 197.22
4 CC 18.42 205.20
5 CCW 18.15 200.51
6 CCW 17.45 190.59
7 P 3.09 0.00
8 P 3.34 0.00
9 S2 5.13 49.68
10 S2 5.36 49.72
Potenza meglio usare pasta con un carattere di sottolineatura-Set:
joinheadrs <- with(head2, paste(head2[1,],head2[2,] ,sep="_") )
joinheadrs
#[1] "trt_crop" "biomass_Mg/ha" "yield_bu/ac"
fonte
2013-07-22 21:36:50
il file a cui è collegato ha un'intestazione di una riga ... Si prega di aggiornare e dirci quali dovrebbero essere i nomi delle colonne data.frame previsti. – flodel
Il modo di gestire questa situazione non è di ri-chiedere la domanda, ma di mettere una taglia sulla vecchia domanda. – joran
Sono d'accordo con @joran. Se la tua domanda è sostanzialmente diversa, ti preghiamo di spiegare le differenze. –