R: чтобы определить, содержит ли имена столбцов в кадре данных строку - PullRequest
1 голос
/ 01 апреля 2020

Скажем, у меня есть 2 фрейма данных:

df1:

Name  Data123   Data321   Age
A     123       321       20

df2:

Name   Age
B      20

I wi sh, чтобы проверить, какой фрейм данных имеет имена столбцов, содержащие Строка «Данные». Если да, фрейм данных будет передан в пользовательскую функцию в целом. Таким образом, в этом случае I sh будет иметь только df1, переданный в указанную функцию. Пожалуйста, сообщите

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Мы можем использовать функцию с grepl для повторного использования (от base R), обернуть с any, чтобы возвратить одно ИСТИНА / ЛОЖЬ (если есть имя столбца с подстрокой «Данные» или нет), и это может использоваться для упомянутой цели

f1 <- function(dat, pat) any(grepl(pat, names(dat)))
f1(df1, '^Data')
f1(df2, '^Data')

или с startsWith

f1 <- function(dat, pat) any(startsWith(names(dat), pat))
f1(df1, 'Data')
0 голосов
/ 01 апреля 2020

вы можете использовать str_detect() из stringr пакета:

library(stringr)
#does any (column) name inside df1 contains "Data"?
any(str_detect(names(df1), "Data"))

Данные:

df1 <- data.frame(Name = "A", Data123 = 123, Data321 = 321, Age = 20)
df2 <- data.frame(Name = "B", Age = 20)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...