как использовать функцию в фрейме данных

#r

Вопрос:

Я пытаюсь использовать substr для фильтрации фрейма данных, например, фильтровать фрейм данных по строкам, в которых 3-й столбец помечен буквой «I». попытка, которая(substr(df[,3],1,1)==»Я»), и это не работает. принимая переменную и проверяя substr(var,1,1)==»I», работает.

Ответ №1:

Я не могу повторить вашу проблему. Вот почему важны воспроизводимые данные. Используйте dput(head(df)) для предоставления образца ваших данных.

 set.seed(42)
var1 <- sample.int(100, 10)
var2 <- paste0(sample(c("|", ""), 10, replace=TRUE), sample(LETTERS, 10))
dat <- data.frame(var1, var2)
dat
#    var1 var2
#  1   49   |D
#  2   65    E
#  3   25    M
#  4   74    Y
#  5   18    T
#  6  100   |B
#  7   47   |H
#  8   24   |C
#  9   71   |A
# 10   89   |J
which(substr(dat[, 2], 1, 1) == "|")
# [1]  1  6  7  8  9 10
which(substr(var2, 1, 1) == "|")
# [1]  1  6  7  8  9 10
which(grepl("^\|", dat[, 2]))
# [1]  1  6  7  8  9 10
 

Последнее является альтернативным подходом с использованием grepl() .

Ответ №2:

Вариант с str_detect

 library(dplyr)
library(stringr)
df1 %>%
    filter(str_detect(col3, fixed("|")))