2015-03-17 3 views
1

Я сделал функцию в R, которая принимает строку и выводит в нее шаблоны. Например, для строки "abcabcabc" она выводит "abc", но если у меня есть строка как, "abcdefghi", она выдает " ". Теперь, при запуске этой функции над dataframe, содержащей 1000 строк, я получил результат, но вывод dataframe состоит из нескольких строк, имеющих " " это как выход. Как я могу удалить это? Выход dataframe имеет следующий тип:Как удалить значения NULL из фрейма данных в R?

1 2 abc 
2 3 bc 
3 4 t 
4 5 " " 
5 3 ui 

Итак, я хочу, чтобы удалить строку, содержащую значения в первых двух колонках, как 4 и 5. Спасибо!

+0

У меня есть первый случай. И я добавлю небольшой пример данных. – Elliot

ответ

1

Пустая строка не NULL (попробуйте is.null(" ")). То, что вы видите, - это факторный уровень " " (между кавычками ничего нет). Вы можете удалить строки data.frame, выполнив поиск этой строки.

xy[!xy$col %in% " ", ] # I added ! to actually select the inverse, as advertized 

или в случае необходимости, вы можете объединить его с каким-то другим уровнем фактора, пересматривая levels(xy).

Вот пример

set.seed(357) 
xy <- data.frame(first = c("a", "a", "b", "b", "b", " ", " ", " ", "d", "d"), 
       second = runif(10)) 

xy[!xy$first %in% " ", ] # can select multiple values (see below) 
xy[!xy$first == " ", ] # alternative, can select only one value 

# bonus 
xy[!xy$first %in% c("a", " "), ] 
+0

Я сделал это, но при запуске этой команды он выдает: «[1] X1 X2 X3 X4 X5 <0 rows> (или строки длины строки)', где мой фреймворк состоит из 23k строк. – Elliot

+0

@Elliot Я неправильно понял ваши ценности. Это должно быть '' '' (одно пространство между кавычками). См. Мое редактирование. –

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