#r
#r
Вопрос:
У меня есть таблица данных вариантов, в которой указана частота вариантов длины в отношении связанных SNP:
A C G T <NA>
-1 0 64 0 63 2
-2 0 0 0 1 0
0 2 5995 2 5704 203
1 0 13 0 16 1
<NA> 0 27 0 21 0
Как вы можете видеть, есть и строка, и столбец. Я хочу удалить их, но, похоже, затрудняюсь указать их с помощью скрипта. Я пробовал следующее, но это возвращает только исходную таблицу, показанную выше:
if(any(is.na(colnames(Data)))){
-which(is.na(colnames(Data)))
}
if(any(is.na(rownames(Data)))){
-which(is.na(rownames(Data)))
}
Data
Пожалуйста, кто-нибудь может сказать мне, где происходит сбой моего скрипта, или как я могу удалить строку и столбец?
Спасибо
Ответ №1:
Если ваши имена являются буквенной строкой "<NA>"
, то ответ РонакШаха является первым и правильным.
Если нет, то попробуйте это:
dat2[!is.na(rownames(dat2)), !is.na(colnames(dat2))]
# y
# x 1 2 3 4
# 1 6 5 3 3
# 2 6 4 6 5
# 3 6 1 0 3
# 4 7 3 3 5
Данные:
set.seed(42)
dat <- data.frame(
x = sample(c(1:4, NA), size = 100, replace = TRUE),
y = sample(c(1:4, NA), size = 100, replace = TRUE))
dat2 <- table(dat, useNA = "always")
dat2
# y
# x 1 2 3 4 <NA>
# 1 6 5 3 3 3
# 2 6 4 6 5 4
# 3 6 1 0 3 1
# 4 7 3 3 5 2
# <NA> 4 7 4 4 5
Комментарии:
1. То есть вы имеете в виду, что данные OP являются
table
, а не фреймом данных?2. Это предположение, тбх. Хотя вопрос начинается с «У меня есть таблица» , и поскольку в нем упоминается «частота» , я подумал, что это справедливое предположение.
3. Это сработало отлично. Большое вам спасибо: два дня, когда я бился головой о стену, наконец-то подошли к концу
Ответ №2:
имена столбцов и строк хранятся в виде строк, поэтому вы не можете идентифицировать их с помощью is.na
:
df[rownames(df) != '<NA>', colnames(df) != '<NA>']
# A C G T
#-1 0 64 0 63
#-2 0 0 0 1
#0 2 5995 2 5704
#1 0 13 0 16
данные
df <- structure(list(A = c(0L, 0L, 2L, 0L, 0L), C = c(64L, 0L, 5995L,
13L, 27L), G = c(0L, 0L, 2L, 0L, 0L), T = c(63L, 1L, 5704L, 16L,
21L), `<NA>` = c(2L, 0L, 203L, 1L, 0L)), class = "data.frame",
row.names = c("-1", "-2", "0", "1", "<NA>"))