2016-03-08 6 views
-1

Я ищу в строке в кадре данных для чего-то, и когда есть совпадение, я хочу добавить эту строку в пустой фрейм данных. Проблема заключается в том, что rbind() также хранит номер строки из кадра данных Я ищу вместо приращения на 1. Таким образом, я получаю кадр данных, как это: enter image description hererbind() также вводит номер строки в новом кадре данных

EDIT:

Я добавил код:

df = as.data.frame(matrix(ncol=6, nrow=0)) 
names(df) <- c("Book","Book Series","Conference Proceeding","Journal","Trade Journal","Name") 
for(j in 1:length(citedByConf[,1])){ 
    if(regexpr(searchConf,citedByConf[j,1])!=-1){ 
    df <- rbind(df,citedByConf[j,]) 
    } 
} 
+2

Те просто грести имена. Вы можете сбросить их через нечто вроде 'rownames (df) <- NULL'. (Будьте осторожны, ваша стратегия 'rbind' здесь будет _very_, _very_ медленной, если ваши данные станут большими.) – joran

+0

Что я могу использовать вместо rbind, чтобы ускорить работу? Также спасибо за ответ, это сработало. – Andrew

+1

Может быть, 'subset (citedByConf, grepl (searchConf, ))' где '' - это первое имя столбца в 'citedByConf'? Трудно дать вам что-то на 100% уверенно работать без более полного примера. Кроме того, прочтите [здесь] (http://www.burns-stat.com/pages/Tutor/R_inferno.pdf) главу 2. – joran

ответ

1

вы можете устранить эту проблему в целом путем создания логического вектора Grep совпадет, создавая новую переменную из подмножества ting исходный dataframe с вашим логическим вектором? @joran имеет правильную идею.

В псевдокоде:

match.found = grepl(searchConf,df$ColumnToMatch) 
df.subset = df[match.found,]