2010-11-24 2 views
20
names(U1) 

[1] "username"  "review_count" "forum_posts" "age"   "avg_interval" 
[6] "avg_sim"  "class" 

Итак, как мне создать пустой фрейм данных U1.RN, который будет иметь те же столбцы, что и U1?Создайте пустую рамку данных в R с теми же столбцами

+4

Могу ли я спросить, зачем нужен фрейм данных с 0 строками? В зависимости от того, что вы собираетесь с ним делать, может быть более эффективным делать вещи по-другому (например, надеюсь, вы не планируете заполнять эту строку за строкой в ​​цикле?) – 2010-11-24 16:40:40

+0

«например, надеюсь, t планирование заполнения этой строки за строкой в ​​цикле? " - да, :(. Каким образом Ry должен делать equiv [псевдокода] для (i в 1: 6000), если (pred.U1.nb.c [i] == 'unabeled') U1.RN [j ++ ,] <- U1 [i,] [/ pseudocode], где pred.U1.nb.c - это вектор, который я получил от pred(), и хочу создать кадр данных, выбирая те строки U1, которые предсказывают извержение ? (... стараюсь быть многословным и не путать одновременно) – Tathagata 2010-11-24 16:58:58

+6

В R предопределяет ваше хранилище! Вы знаете, что перед циклом требуется фрейм данных размером 6000 строк, поэтому создайте его и залейте его в ряд за строкой. еще быстрее: создайте матрицу правильного размера, заполните эту строку за строкой, а затем преобразуйте в фрейм данных, так как матрицы намного быстрее работают. Если вам нужна дополнительная помощь (похоже, вам может и не понадобиться цикл, просто некоторые простые индексирования и подмножества/вставки), можете ли вы начать новый Q и предоставить правильный, небольшой пример того, что вы действительно хотите сделать? Если вы это сделаете, я пообещаю посмотреть на него и дать ответ . – 2010-11-24 17:18:59

ответ

58

Вы можете сделать это:

U1.RN <- U1[0,] 
2

Использование dplyr, есть несколько хороших вариантов:

slice(U1, 0) 
filter(U1, FALSE) 
filter(U1, NA) 

slice подход, вероятно, ярким.

1

По линии df [0,] вы также можете использовать булевскую маску, которая может сделать код более читаемым: df [FALSE].

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