Zastosowanie readLines
z 2 do limitu, analizować je, paste0
je ze sobą, a następnie odczytywane z read.table
z skip =2
i header=FALSE
(domyślnie). Zakończyć proces off z cesją nazwy kolumn:
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
"
Pewnie można wykorzystać argument pliku, ale przy użyciu text
argumentu do odczytu funkcji sprawia, że to bardziej samodzielne:
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
Might być lepiej użyć pasty z podkreślenia-Sep:
joinheadrs <- with(head2, paste(head2[1,],head2[2,] ,sep="_") )
joinheadrs
#[1] "trt_crop" "biomass_Mg/ha" "yield_bu/ac"
Plik, z którym się łączysz ma nagłówek jednoliniowy ... Zaktualizuj i powiedz nam, jakie powinny być oczekiwane nazwy kolumn data.frame. – flodel
Sposób radzenia sobie z tą sytuacją nie polega na ponownym zadawaniu pytania, ale na nagradzaniu starego pytania. – joran
Zgadzam się z @joran. Jeśli twoje pytanie jest zasadniczo inne, wyjaśnij różnice. –