[R] How to loop over two files ...

cpoiw@rt m@iii@g oii chemo@org@uk cpoiw@rt m@iii@g oii chemo@org@uk
Sat Jun 20 00:19:05 CEST 2020


Sorry - its been a long week!

there is a foreach package but I try to avoid extras

make your for statements:

for ( a in rownames(f1) ) {

# a will now be a row number rather than the value, so replace ' a ' in 
the paste0 with: f1[ a, 1]

so

ext <- paste0( "/ld/human/pairwise/",
                  f1[a,1],
                  "/",
                  f2[b,1],
                  "?population_name=1000GENOMES:phase_3:KHV")

On 2020-06-19 22:54, Ana Marija wrote:
> I tried it:
> 
>  > library(httr)
>> library(jsonlite)
>> library(xml2)
>> library(readr)
>> server <- "http://rest.ensembl.org"
>> f1 <- read_tsv("1g", col_names=F)
> Parsed with column specification:
> cols(
>   X1 = col_character()
> )
>> f2 <- read_tsv("1n", col_names=F)
> Parsed with column specification:
> cols(
>   X1 = col_character()
> )
>> 
>> for ( a in as.list(f1[,1]) ) {
> +
> +    for ( b in as.list(f2[,1]) ) {
> +
> + ext <- paste0( "/ld/human/pairwise/",
> +                 a,
> +                 "/",
> +                 b,
> +                 "?population_name=1000GENOMES:phase_3:KHV")
> +
> +                 r <- GET(paste(server, ext, sep = ""),
> + content_type("application/json"))
> +
> +                 write(r,file="list.txt",append=TRUE)
> +
> +
> +    }
> +
> + }
> Error in parse_url(url) : length(url) == 1 is not TRUE
> 
>> traceback()
> 10: stop(simpleError(msg, call = if (p <- sys.parent(1L)) sys.call(p)))
> 9: stopifnot(length(url) == 1)
> 8: parse_url(url)
> 7: is.url(url)
> 6: stopifnot(is.url(url))
> 5: build_url(parse_url(url)[c("scheme", "hostname", "port")])
> 4: handle_name(url)
> 3: handle_find(url)
> 2: handle_url(handle, url, ...)
> 1: GET(paste(server, ext, sep = ""), content_type("application/json"))
> 
> On Fri, Jun 19, 2020 at 4:41 PM <cpolwart using chemo.org.uk> wrote:
>> 
>> Oh - read.text isn't in base!  Not sure where is came from (my head
>> mostly!)  You may have something that adds it but better to use
>> something that works.  So try using:
>> 
>> library(readr)
>> f1 <- read_tsv("1g.txt", col.names=F)
>> 
>> This will give you a tibble with f1$X1 with the file in it
>> 
>> then loop it with (a in as.list(f1[,1])
>> 
>> Others will have much slicker code than me!
>> 
>> On 2020-06-19 22:02, Ana Marija wrote:
>> > Hi,
>> >
>> > thanks for getting back to me, it is just for my job :)
>> >
>> > so I tried it:
>> >
>> > library(httr)
>> > library(jsonlite)
>> > library(xml2)
>> > library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R",
>> > "lib")))
>> > sparkR.session(master = "local[*]", sparkConfig =
>> > list(spark.driver.memory = "2g"))
>> >
>> > server <- "http://rest.ensembl.org"
>> >
>> > f1 <- read.text("1g.txt")
>> > f2 <- read.text("1n.txt")
>> >
>> > for ( a in as.list(f1) ) {
>> >
>> >    for ( b in as.list(f2) ) {
>> >
>> > ext <- paste0( "/ld/human/pairwise/",
>> >                 a,
>> >                 "/",
>> >                 b,
>> >                 "?population_name=1000GENOMES:phase_3:KHV")
>> >
>> >                 r <- GET(paste(server, ext, sep = ""),
>> > content_type("application/json"))
>> >
>> >                 write(r,file="list.txt",append=TRUE)
>> >
>> >
>> >    }
>> >
>> > }
>> >
>> > and I got this error:
>> > Error in as.list.default(f1) :
>> >   no method for coercing this S4 class to a vector
>> >
>> > Please advise
>> >
>> > On Fri, Jun 19, 2020 at 3:28 PM <cpolwart using chemo.org.uk> wrote:
>> >>
>> >> so (untested) if you did something like
>> >>
>> >> f1 <- read.text("1g.txt")
>> >> f2 <- read.text("1n.txt")
>> >>
>> >> for ( a in as.list(f1) ) {
>> >>
>> >>    for ( b in as.list(f2) ) {
>> >>
>> >> ext <- paste0( "/ld/human/pairwise/",
>> >>                 a,
>> >>                 "/",
>> >>                 b,
>> >>                 "?population_name=1000GENOMES:phase_3:KHV")
>> >>
>> >>                 r <- GET(paste(server, ext, sep = ""),
>> >> content_type("application/json"))
>> >>
>> >>                 # You presumably need to do something with 'r' at the
>> >> moment its over written by the next loop..  were
>> >>                 # you appending it to list.txt?  Possibly its just a
>> >> bit
>> >> of the R output you want.?
>> >>
>> >>                 write(r,file="list.txt",append=TRUE)
>> >>
>> >>
>> >>    }
>> >>
>> >> }
>> >>
>> >>
>> >> Are we doing your PhD for you ;-)  Do we get to share ;-)
>> >>
>> >>
>> >> On 2020-06-19 20:34, Ana Marija wrote:
>> >> > Hello,
>> >> >
>> >> > I have two files (each has 300 lines)like this:
>> >> >
>> >> > head 1g.txt
>> >> > rs6792369
>> >> > rs1414517
>> >> > rs16857712
>> >> > rs16857703
>> >> > rs12239392
>> >> > ...
>> >> >
>> >> > head 1n.txt
>> >> > rs1042779
>> >> > rs2360630
>> >> > rs10753597
>> >> > rs7549096
>> >> > rs2343491
>> >> > ...
>> >> >
>> >> > For each pair of rs# from those two files I can run this command in R
>> >> >
>> >> > library(httr)
>> >> > library(jsonlite)
>> >> > library(xml2)
>> >> >
>> >> > server <- "http://rest.ensembl.org"
>> >> > ext <-
>> >> > "/ld/human/pairwise/rs6792369/rs1042779?population_name=1000GENOMES:phase_3:KHV"
>> >> >
>> >> > r <- GET(paste(server, ext, sep = ""),
>> >> > content_type("application/json"))
>> >> >
>> >> > stop_for_status(r)
>> >> > head(fromJSON(toJSON(content(r))))
>> >> >    d_prime       r2 variation1 variation2         population_name
>> >> > 1 0.975513 0.951626  rs6792369  rs1042779 1000GENOMES:phase_3:KHV
>> >> >
>> >> > What I would like to do is to do is to run this command for every SNP
>> >> > in one list (1g.txt) to each SNP in another list (1n.txt). Where SNP#
>> >> > is rs# and output every line of result in list.txt
>> >> >
>> >> > The process is illustrated in the attachment.
>> >> >
>> >> > Please help,
>> >> > Ana
>> >> >
>> >> > ______________________________________________
>> >> > R-help using 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.



More information about the R-help mailing list