Я читаю файл строки за строкой, а затем добавляю определенные строки в dataframe. Вот пример строки, я хотел бы добавить к dataframe:Добавление строки в dataframe
ATOM 230 CA GLU A 31 66,218 118,140 2,411 1,00 31,82 C
Я проверил, что мои чеки в порядке, я думаю, что это специально, чтобы сделать с моей командой rbind. Спасибо за вашу помощь!
Edit: Ошибка следующим образом, выход dataframe является:
Residue AtomCount SideChain XCoord YCoord ZCoord
2 MET 1 A 62.935 97.579 30.223
21 <NA> 2 A 63.155 95.525 27.079
3 <NA> 3 A 65.289 96.895 24.308
Похоже, он останавливает подбирая имя остатка ..
код я использую :
get.positions <- function(sourcefile, chain_required = "A"){
positions = data.frame()
visited = list()
filedata <- readLines(sourcefile, n= -1)
for(i in 1: length(filedata)){
input = filedata[i]
id = substr(input,1,4)
if(id == "ATOM"){
type = substr(input,14,15)
if(type == "CA"){
#if there are duplicates it takes the first one
residue = substr(input,18,20)
type_of_chain = substr(input,22,22)
atom_count = strtoi(substr(input, 23,26))
if(atom_count >=1){
if(type_of_chain == chain_required && !(atom_count %in% visited)){
position_string = trim(substr(input,30,54))
position_string = lapply(unlist(strsplit(position_string," +")),as.numeric)
positions<- rbind(positions, list(residue, atom_count, type_of_chain, position_string[[1]], position_string[[2]], position_string[[3]]))
}
}
}
}
}
return (positions)
}
(1) Вы не сказали, что проблема в том, (2) После того, как вы обнаружите, что этот код _amazingly_ медленно, попробуйте прочитать несколько первых разделов [R Inferno] (http://www.burns-stat.com/pages/Tutor/R_inferno.pdf), чтобы понять, почему это так и как его исправить. – joran
способ отладки того, содержит ли переменная правильную информацию или нет, просто распечатать с помощью 'print (variable value)' и проверить. – Subs
Дайте нам очень небольшой набор данных, который иллюстрирует вашу проблему. Например, глядя на ваш цикл, я заметил, что вы разделили строку символом '+', но в вашем примере ввода нет плюсовых символов. Кроме того, 'strtoi', возможно, не делает то, что, по вашему мнению, делает; если вы передадите его с плавающей точкой, он вернет 'NA'. Наконец, из какого пакета вы получили 'trim'? – nograpes