You did half of what Petr asked... but your email still looks unreadable
because you did not send it as text only. Look at [1] to see what we see, and why we want you to send plain text. What you see is not what we see.

This is an outer join... an inherently inefficient operation according to relational database theory. Most solutions to this type of problem are likely to be slow, but minimizing unnecessary use of memory can help and to do that you can overwrite existing values instead of successively concatenating longer vectors of results as you go.

To understand the solution below, you should execute individual expressions interactively as you step through the code to see what the intermediate values look like. In particular, expressions on the right side of assignments can be interactively entered at the console without changing the variables in the environment so do it as much as you need to in order to see what is happening.

# alignment not required, but HTML run-together lines not wanted
A <- structure( list( posA = c( 1L, 2L, 5L, 4L, 9L)
                    , posB = c( 9L, 7L, 12L, 7L, 13L)
                    )
              , .Names = c("posA", "posB")
              , class = "data.frame"
              , row.names = c(NA, -5L)
              )
B <- structure( list( pos = c( 4L, 2L, 7L, 1L, 13L, 12L, 9L)
                    , a = c(0.4, 0.1, 0.5, 0.4, 0.1, 0.2, 0.3)
                    , b = c(7L, 5L, 8L, 1L, 6L, 11L, 12L)
                    , c = c(0.8, 0.4, 0.32, 0.1, 0.13, 0.01, 0.23))
              , .Names = c("pos", "a", "b", "c")
              , class = "data.frame"
              , row.names = c(NA, -7L)
              )
# sort B
sB <- B[ order( B$pos ), ]
# performance: set aside memory to remember results
A$count07 <- NA
A$mina <- NA
for ( i in seq.int( nrow( A ) ) ) {
  # logical indexing vector
  idx <- A[ i, "posA" ] <= sB$pos & sB$pos <= A[ i, "posB" ]
  # only extract desired vector once
  a <- sB[ idx, "a" ]
  # sum adds logical values as if TRUE=1
  A[ i, "count07" ] <- sum( cumsum( a ) < 0.7 )
  A[ i, "mina" ] <-min( a )
}
print( A )

#=== sample interactive session for study after A and B are defined
#=== execute lines one at a time and study them!
order( B$pos )
B[ order( B$pos ), ]
sB <- B[ order( B$pos ), ]
A$count07 <- NA
A$mina <- NA
i <- 1
A[ i, "posA" ] A[ i, "posB" ]
sB$pos
A[ i, "posA" ] <= sB$pos
sB$pos <= A[ i, "posB" ] A[ i, "posA" ] <= sB$pos & sB$pos <= A[ i, "posB" ]
idx <- A[ i, "posA" ] <= sB$pos & sB$pos <= A[ i, "posB" ]
sB[ idx, "a" ]
a <- sB[ idx, "a" ]
cumsum( a )
cumsum( a ) < 0.7
sum( cumsum( a ) < 0.7 )
A[ i, "count07" ] <- sum( cumsum( a ) < 0.7 )
min( a )

------
[1] https://stat.ethz.ch/pipermail/r-help/2016-June/439404.html

On Mon, 13 Jun 2016, oslo via R-help wrote:

Hi Petr;
Thanks so much. Here are the questions and the dput(A) and dput(B). Basicaly I 
have two questions;
dput(A)structure(list(posA = c(1L, 2L, 5L, 4L, 9L), posB = c(9L, 7L, 12L, 7L, 13L)), .Names = c("posA", "posB"), class = 
"data.frame", row.names = c(NA, -5L))> dput(B)structure(list(pos = c(4L, 2L, 7L, 1L, 13L, 12L, 9L), a = c(0.4, 0.1, 0.5, 0.4, 0.1, 0.2, 0.3), b = 
c(7L, 5L, 8L, 1L, 6L, 11L, 12L), c = c(0.8, 0.4, 0.32, 0.1, 0.13, 0.01, 0.23)), .Names = c("pos", "a", "b", "c"), class = 
"data.frame", row.names = c(NA, -7L))
Q1) Values in A represent the region of chromosome. I need choose these regions in B (all region in A are 
exist in B in a single column) and then summing up the column "a in B and count the numbers that 
gives >0.7. For example, consider  the first row in A. They are 1 and 9. After sorting the first column 
in B then summing column "a" only between 1 to 9 in sorted B and cut off at >0.7. Then count 
how many rows in sorted B gives >0.7. For example there are only 5 rows between 1 to 9 in sorted B and 
only summing first 2 of them  gives>0.7 . Then my answer is going to be 2
Q2) What is the min value of B$a for given each intervals in A
Regards,
Oslo
   On Monday, June 13, 2016 8:05 AM, PIKAL Petr <petr.pi...@precheza.cz> wrote:


Ok.

Instead of explaining what you have, please send a result of

dput(B) and dput(A)

And set you mail client to send plain text mail otherwise your code is barely 
readable.

What do you want to do with printed values?

What is B? From this it seems that it is data frame but then you try to put 
sorted data frame into a data frame column.

B$possort=B[order(B$pos),]

With such code and data frame I get an error.

So please try to keep above mentioned when posting a query.

Regards
Petr


-----Original Message-----
From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of oslo via R-
help
Sent: Friday, June 10, 2016 11:09 PM
To: oslo <o...@yahoo.com>; Jeff Newmiller <jdnew...@dcn.davis.ca.us>;
oslo via R-help <r-help@r-project.org>; oslo <hok...@yahoo.com>
Subject: Re: [R] summing up a column.

Jeff;
  thanks for this. My question was job related. No from my course. I need
finish a job for the place I work. I am so sorry for causing misunderstanding.
thanks,
Oslo

    On Friday, June 10, 2016 5:08 PM, oslo via R-help <r-help@r-project.org>
wrote:


  Jeff thanks for this. My question was job related. No from my course. I need
finish a job for the place I work. I am so sorry for causing misunderstanding.
thanks,
Oslo

    On Friday, June 10, 2016 5:02 PM, Jeff Newmiller
<jdnew...@dcn.davis.ca.us> wrote:


  Multiple posting happens when you are learning a new system, but reading
the posting guide can keep the bleeding down.

1) There is a no-homework policy on this list... different educational
organizations have different standards for what is acceptable outside help,
so you should be using the support offered by your instructor or educational
institution.

2) Once you have completed your course, you CAN learn to post data with
your code so that it is self-contained... that is, reproducible on our vanilla R
session. Using the dput function is one excellent strategy.

3) This is not a problem that needs a loop... as Bert (not Bret) said, you can 
do
this in one or two statements if you simply use basic logical indexing. If your
instructor wants you to do it with a loop for sine reason then you really really
should not be here... you should be talking to him/her.
--
Sent from my phone. Please excuse my brevity.

On June 10, 2016 1:34:03 PM PDT, oslo via R-help <r-help@r-project.org>
wrote:
Dear All;
I had difficulty to post a mail along with appropriate of data structure. I do
sincerely apologize for multiple posting


I would like to sum up the B$a column and cut off at 0.7 for the each row of
intervals giving in file=A.For example the interval  at the first row in A$posA
and A$posB is 1 and 9. So, I need adding up the B$a and cut off B$a>.7 from
the 1 to 9 in B$pos. And then I need to the same using the intervals in the
second, third..... rows in A. Obviously my loop is wrong and  does not work
properly. Please help for my this first experience.  Regards Here are my
codes #sorting B$possort=B[order(B$pos),] #Running loop for(i in 1:nrow(A))
{if(sum(B[a$B, i:A[1:2])>0.7) {print(A[1:i,]) } } Reply, R 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.



    [[alternative HTML version deleted]]

______________________________________________
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.


      [[alternative HTML version deleted]]

______________________________________________
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.

________________________________
Tento e-mail a jak?koliv k n?mu p?ipojen? dokumenty jsou d?v?rn? a jsou ur?eny 
pouze jeho adres?t?m.
Jestli?e jste obdr?el(a) tento e-mail omylem, informujte laskav? neprodlen? 
jeho odes?latele. Obsah tohoto emailu i s p??lohami a jeho kopie vyma?te ze 
sv?ho syst?mu.
Nejste-li zam??len?m adres?tem tohoto emailu, nejste opr?vn?ni tento email 
jakkoliv u??vat, roz?i?ovat, kop?rovat ?i zve?ej?ovat.
Odes?latel e-mailu neodpov?d? za eventu?ln? ?kodu zp?sobenou modifikacemi ?i 
zpo?d?n?m p?enosu e-mailu.

V p??pad?, ?e je tento e-mail sou??st? obchodn?ho jedn?n?:
- vyhrazuje si odes?latel pr?vo ukon?it kdykoliv jedn?n? o uzav?en? smlouvy, a 
to z jak?hokoliv d?vodu i bez uveden? d?vodu.
- a obsahuje-li nab?dku, je adres?t opr?vn?n nab?dku bezodkladn? p?ijmout; 
Odes?latel tohoto e-mailu (nab?dky) vylu?uje p?ijet? nab?dky ze strany p??jemce 
s dodatkem ?i odchylkou.
- trv? odes?latel na tom, ?e p??slu?n? smlouva je uzav?ena teprve v?slovn?m 
dosa?en?m shody na v?ech jej?ch n?le?itostech.
- odes?latel tohoto emailu informuje, ?e nen? opr?vn?n uzav?rat za spole?nost 
??dn? smlouvy s v?jimkou p??pad?, kdy k tomu byl p?semn? zmocn?n nebo p?semn? 
pov??en a takov? pov??en? nebo pln? moc byly adres?tovi tohoto emailu p??padn? 
osob?, kterou adres?t zastupuje, p?edlo?eny nebo jejich existence je adres?tovi 
?i osob? j?m zastoupen? zn?m?.

This e-mail and any documents attached to it may be confidential and are 
intended only for its intended recipients.
If you received this e-mail by mistake, please immediately inform its sender. 
Delete the contents of this e-mail with all attachments and its copies from 
your system.
If you are not the intended recipient of this e-mail, you are not authorized to 
use, disseminate, copy or disclose this e-mail in any manner.
The sender of this e-mail shall not be liable for any possible damage caused by 
modifications of the e-mail or by delay with transfer of the email.

In case that this e-mail forms part of business dealings:
- the sender reserves the right to end negotiations about entering into a 
contract in any time, for any reason, and without stating any reasoning.
- if the e-mail contains an offer, the recipient is entitled to immediately 
accept such offer; The sender of this e-mail (offer) excludes any acceptance of 
the offer on the part of the recipient containing any amendment or variation.
- the sender insists on that the respective contract is concluded only upon an 
express mutual agreement on all its aspects.
- the sender of this e-mail informs that he/she is not authorized to enter into 
any contracts on behalf of the company except for cases in which he/she is 
expressly authorized to do so in writing, and such authorization or power of 
attorney is submitted to the recipient or the person represented by the 
recipient, or the existence of such authorization is known to the recipient of 
the person represented by the recipient.



        [[alternative HTML version deleted]]

______________________________________________
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.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
---------------------------------------------------------------------------
______________________________________________
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