У меня есть матрица, которая включает в себя 4 и шестизначные числа, которые в основном состоят из 2 или 3 пар цифр, описывающих перекрывающиеся фигуры. Так, например,Выбор двух цифр из 4 или шестизначного числа в R
data1<-cbind(474440,470000,440000,40000,404400,474000).
Каждая ячейка матрицы имеет либо 47
, 44
, 40
, или некоторая комбинация выше, а остальная часть числа является нули. У меня есть другой набор данных, который аналогичен, но имеет только две пары чисел, а не три. Так, например,
data2<-cbind(5253,5200,5300,50000,5053).
Опять же, эта комбинация содержит 52
, 53
, 50
, или некоторую их комбинацию. Я хотел бы иметь возможность выбирать логическую матрицу для каждого из двух цифр, поэтому выбор 40
в data1
даст (TRUE,FALSE,FALSE,TRUE,TRUE,TRUE)
, и выбор в data2
даст (FALSE, FALSE, FALSE, TRUE, TRUE)
. Я попытался создать список уникальных двухзначных чисел, которые я ищу, и используя grepl, чтобы выбрать те, которые соответствуют шаблону, но из-за нулей, которые находятся в матрице, представляющей пустые значения, grepl выбирает слишком много клетки; например, ищет 40
в data1
даст (TRUE, FALSE, TRUE,TRUE, TRUE, TRUE)
.
Я думаю, что вы делаете это слишком сложным для себя. как насчет размещения разделителей между парами, таких как «-», чтобы вы не получили ложное совпадение? или заменить значения 00 на xx? – Eccountable
Этот вопрос о [разбиении строки на подстроки] (http://stackoverflow.com/questions/11619616/how-to-split-a-string-into-substrings-of-a-given-length) может быть полезен тебе. – thelatemail
Предупреждение: помните, что семейство функций 'grep, gsub' приводит числа к символам. Например, 'data <-474.4400e7; grepl ('444', data) 'вернет' TRUE' (если вы не сделали что-то плохое с 'format', как намекнул Sven). –