Мы берем транспонирование и объединение (c
), чтобы получить vector
i1 <- rownames(df)%in%(grep("Number(\\.\\d)*", rownames(df), value = TRUE))
v1 <- c(t(df[i1, ]))
ПРИМЕЧАНИЕ: grep
возвращает индекс, поэтому нет необходимости снова делать %in%
длясовпадения с именами строк
i2 <- grep("Number(\\.\\d)*", rownames(df))
будет достаточно для подмножества
v2 <- c(t(df[i2, ]))
Лучше иметь его как вектор, а не как data.frame.Если нам действительно нужна одна строка data.frame с таким количеством столбцов
as.data.frame.list(v1)
ПРИМЕЧАНИЕ 2. Слегка измените шаблон, чтобы он соответствовал .
, за которым следовала цифра, если таковая имеется.В коде ОП он будет проверять Number*
, т. Е. 0 или более 'r' (хотя в данных это работает)