This is almost certainly not the most efficient way:

tot <- data.frame(v1 = paste0(LETTERS[seq(1:5)],seq(1:10)),
v2 = paste0(LETTERS[seq(1:5)],seq(from = 101, to=110, by = 1)), v3 = paste0(LETTERS[seq(1:5)],seq(from = 111, to=120, by = 1)), v4 = paste0(LETTERS[seq(1:5)],seq(from = 121, to=130, by = 1)), v5 = paste0(LETTERS[seq(1:5)],seq(from = 131, to=140, by = 1)), v6 = paste0(LETTERS[seq(1:5)],seq(from = 101, to=110, by = 1))
             )

# set a variable to hold the result
myResult <- NULL

# iterate through each variable
for (v in 1:length(tot[1,])) {
  thisResult <- as.character(tot[grepl ('^E10', tot[,v]),v])
  myResult <- c(myResult, thisResult)
}

myResult <- unique( myResult )


===

Indeed as I wrote this Jeff has popped along with unlist!

Using my example above:

unique ( as.character( unlist (tot) )[grepl ('^E10', as.character( unlist (tot) ) )] )

does what you wanted (you may not need the as.characters if you are on R 4.o, or if your df has chars rather than factors.

On 2020-05-15 21:34, Jeff Newmiller wrote:
If you want to treat your data frame as if it were a vector, then
convert it to a vector before you give it to grep.

unlist(tot)

On May 15, 2020 12:24:17 PM PDT, Ana Marija <sokovic.anamar...@gmail.com> wrote:
Hello,

this command was running for more than 2 hours
grep("E10",tot,value=T)
and no output

and this command
df1 <- tot %>% filter_all(any_vars(grepl( '^E10', .)))

gave me a subset (a data frame) of tot where ^E10

what I need is just a vector or all values in tot which start with E10.

Thanks
Ana

On Fri, May 15, 2020 at 12:13 PM Jeff Newmiller
<jdnew...@dcn.davis.ca.us> wrote:

Read about regular expressions... they are extremely useful.

df1 <- tot %>% filter_all(any_vars(grepl( '^E10', .)))

It is bad form not to put spaces around the <- assignment.


On May 15, 2020 10:00:04 AM PDT, Ana Marija
<sokovic.anamar...@gmail.com> wrote:
>Hello,
>
>I have a data frame:
>
>> dim(tot)
>[1] 502536   1093
>
>How would I extract from it all strings that start with E10?
>
>I know how to extract all rows that contain with E10
>df0<-tot %>% filter_all(any_vars(. %in% c('E10')))
>> dim(df0)
>[1] 5105 1093
>
>but I just need a vector of strings that start with E10...
>it would look something like this:
>
>[1] "E102" "E109" "E108" "E103" "E104" "E105" "E101" "E106" "E107"
>
>Thanks
>Ana
>
>______________________________________________
>R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.

--
Sent from my phone. Please excuse my brevity.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to