2016-03-18 4 views
0

У меня есть .txt-файл, содержащий 44 столбца. первые два и два последних столбца не содержат заголовок. Поэтому, когда я буду использовать read.table, тогда он выдаст ошибку, строка 2 не содержит 44 элементов. Для решения этой ошибки я использовал fill = TRUE. Но используя это, он разрешит ошибку, но первые два столбца будут сдвинуты в столбцах с заголовками A и R. Просьба предоставить некоторую помощь по чтению таких файлов .txt в r.Ошибка при чтении .txt-файла в r

Last position-specific scoring matrix computed, weighted observed percentages rounded down, information per position, and relative weight of gapless real matches to pseudocounts 


      A R N D C Q E G H I L K M F P S T W Y V A R N D C Q E G H I L K M F P S T W Y V 
    1 M -1 -2 -2 -3 -2 -1 -2 -3 -2 1 2 -1 6 0 -3 -2 -1 -2 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 0 0 0 0 0 0.45 0.03 
    2 K -1 2 0 -1 -3 1 1 -2 -1 -3 -3 5 -1 -3 -1 0 -1 -3 -2 -2 0 0 0 0 0 0 0 0 0 0 0 100 0 0 0 0 0 0 0 0 0.57 0.02 
    3 K -1 2 0 -1 -3 1 1 -2 -1 -3 -3 5 -1 -3 -1 0 -1 -3 -2 -2 0 0 0 0 0 0 0 0 0 0 0 100 0 0 0 0 0 0 0 0 0.57 0.02 
    4 R -1 4 3 0 -2 0 0 -1 0 -3 -3 1 -2 -3 -2 2 0 -3 -2 -2 0 42 31 0 0 0 0 0 0 0 0 0 0 0 0 27 0 0 0 0 0.41 0.01 
    5 I -1 -2 -2 -2 -1 -2 -2 -3 -3 3 2 -2 1 0 -2 -1 2 -2 -1 1 0 0 0 0 0 0 0 0 0 42 27 0 0 0 0 0 31 0 0 0 0.23 0.01 
    6 L -2 -3 -3 -3 -2 -3 -3 -4 -2 2 3 -3 1 3 -3 -2 -1 -1 1 1 0 0 0 0 0 0 0 0 0 27 42 0 0 31 0 0 0 0 0 0 0.35 0.01 
    7 S  0 -1 0 -1 -1 -1 -1 -1 -1 1 -1 -1 0 -2 -1 3 1 -3 -2 0 0 0 0 0 0 0 0 0 0 31 0 0 0 0 0 69 0 0 0 0 0.23 0.01 
    8 A  4 -1 -2 -2 0 -1 -1 0 -2 -1 -2 -1 -1 -2 -1 1 0 -3 -2 0 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.44 0.02 
    9 V -1 -3 -3 -3 -1 -2 -3 -3 -3 3 1 -2 1 -1 -3 -2 0 -3 -1 4 0 0 0 0 0 0 0 0 0 31 0 0 0 0 0 0 0 0 0 69 0.37 0.01 
+0

Если это одноразовый случай, то добавить заголовки вручную? – ekstroem

ответ

0

В основном это сворачивает с векторами, которые затем используются для обозначения столбцов и строк. Я не могу придумать другой способ сделать это, если вы не хотите менять файл перед его чтением.

Вы не указали, являются ли первые два столбца вашего текстового файла отдельными переменными или являются именами строк. Поэтому я прихожу как минимум к трем различным решениям. Но первые три линии одинаковы для каждого решения:

# Reading the data without the header. 
data <- read.table("data.txt", header = F, skip = 4) 

# Reading only the header. Pay attention to the brackets at the end! 
col.names <- read.table("data.txt", header = F, skip = 3, fill = T, stringsAsFactors = F)[1, ] 
col.names <- as.character(col.names) # let's strip of the names for aesthetic reasons 

С этого места выберете желаемый результат.

а) Первые два столбца в виде отдельных переменных:

a.col.names <- c("V1", "V2", col.names[1:42]) 

a.data <- data 
names(a.data) <- a.col.names 

б) Первые два столбца в качестве названий строк:

b.data <- data[3:NCOL(data)] 

colnames(b.data) <- col.names[1:42] 

b.row.names <- paste(data[[1]], data[[2]], sep = "") 
rownames(b.data) <- b.row.names 

с) Первый столбец в качестве имени строки, второй столбец в качестве отдельной переменной:

c.data <- data[2:NCOL(data)] 
c.col.names <- c("V1", col.names[1:42]) 
names(c.data) <- c.col.names 
+0

Спасибо, что ответили. я не получаю точный ответ, который я хочу. –

+0

Не могли бы вы сделать немного более конкретным? – phobo

Смежные вопросы