Исключить пустоту и NA в R

Возможный дубликат:
R - удалить строки с NA в файле data.frame

У меня есть dataframe с именем sub.new с несколькими столбцами в нем. И я пытаюсь исключить любую ячейку, содержащую NA или blank space "".
Я попытался использовать subset(), но он нацелился на определенный столбец. Нужно ли вообще просканировать весь файл данных и создать подмножество, в котором ни одна ячейка не является NA или blank space?

В приведенном ниже примере должна сохраняться только первая строка:

# ID               SNP             ILMN_Strand   Customer_Strand
ID1234              [A/G]          TOP           BOT
Non-Specific        NSB (Bgnd)     Green
Non-Polymorphic     NP (A)         Red
Non-Polymorphic     NP (T)         Purple
Non-Polymorphic     NP (C)         Green
Non-Polymorphic     NP (G)         Blue
Restoration         Restore        Green

Любые предложения? Благодаря

Ответы

Ответ 1

Хорошей идеей является установка всех "" (пустых ячеек) на NA до дальнейшего анализа.

Если вы читаете свой ввод из файла, это хороший выбор, чтобы отбросить все "" на NA:

foo <- read.table(file="Your_file.txt", na.strings=c("", "NA"), sep="\t") # if your file is tab delimited

Если вы уже загрузили свою таблицу, вы можете действовать следующим образом:

foo[foo==""] <- NA

Затем, чтобы сохранить только строки без NA, вы можете просто использовать na.omit():

foo <- na.omit(foo)

Или сохранить столбцы без NA:

foo <- foo[, colSums(is.na(foo)) == 0] 

Ответ 2

Не знаю точно, какой тип данных у вас есть, поэтому я предоставляю общий ответ.

x <- c(1,2,NA,3,4,5)
y <- c(1,2,3,NA,6,8)
my.data <- data.frame(x, y)
> my.data
   x  y
1  1  1
2  2  2
3 NA  3
4  3 NA
5  4  6
6  5  8
# Exclude rows with NA values
my.data[complete.cases(my.data),]
  x y
1 1 1
2 2 2
5 4 6
6 5 8