[R] Multiplying two vectors of the same size to give a third vector of the same size
Philip Rhoades
ph|| @end|ng |rom pr|com@com@@u
Wed Jun 21 07:19:37 CEST 2023
avi,
On 2023-06-21 12:46, avi.e.gross using gmail.com wrote:
> I was rushing out Phil so let me amend what I wrote. As others noted,
> this is fairly beginner stuff. If you have more such questions,
> besides reading up, please consider sending questions to the Tutor
> mailing list where there is more patience. 😉
No worries - thanks!
> You wanted to change selected small values to 0.0.
>
> So you do not want the code I supplied as illustration as it removes
> small elements making a smaller vector.
>
> Assume this test:
>
> A <- c(NA, 0.3, 0.6, NA, 0.9)
> B <- c(NA, 0.2, 0.6, 0.9, 0.9)
>
> C <- A * B
> print(C)
>
> The result at this point is:
>
> [1] NA 0.06 0.36 NA 0.81
>
> As expected, anything with an NA in either vector will generate an NA
> in the componentwise multiplication. Note the second item at 0.06 is
> under your threshold of 0.1.
>
> What you want is not this:
>
> Result <- C[C < 0.1]
>> Result
> [1] NA 0.06 NA
>
> That threw away anything above the threshold.
Yes, I realised that later . .
> What you want may be this:
>
> C[C < 0.1] <- 0.0
> print(C)
>
> This returns
>
> [1] NA 0.00 0.36 NA 0.81
>
> Everything that is NA or at or above 0.1 is kept and anything below
> 0.1 is zeroed and kept.
>
> Of course, if you do not want to keep the NA, that can trivially be
> removed:
>
> C[!is.na(C)]
> [1] 0.00 0.36 0.81
I actually got there myself after a bit of experimenting! - but you
pointed me in the right direction!
Thanks!
Phil.
> -----Original Message-----
> From: Philip Rhoades <phil using pricom.com.au>
> Sent: Tuesday, June 20, 2023 1:04 PM
> To: avi.e.gross using gmail.com
> Cc: r-help using r-project.org
> Subject: Re: [R] Multiplying two vectors of the same size to give a
> third vector of the same size
>
> avi,
>
>
> On 2023-06-21 01:55, avi.e.gross using gmail.com wrote:
>> Phil,
>>
>> What have you tried. This seems straightforward enough.
>>
>> Could you clarify what you mean by NULL?
>
>
> I guess in R in would just be an empty cell? - ie NOT a zero.
>
>
>> In R, it is common to use NA or a more specific version of it.
>
>
> Ah yes, that would be it I think.
>
>
>> So assuming you have two vectors containing floats with some NA, then:
>>
>> C <- A*B
>>
>> Will give you the products one at a time if the lengths are the same.
>> NA
>> times anything is NA.
>
>
> Right - yes that works! - thanks!
>
>
>> Your second condition is also simple as you want anything below a
>> threshold
>> to be set to a fixes value.
>>
>> Since you already have C, above, your condition of:
>>
>> threshold <- 0.1
>> C < threshold
>>
>> The last line returns a Boolean vector you can use to index C to get
>> just
>> the ones you select as TRUE and thus can change:
>>
>> Result <- C[C < threshold]
>
>
> Ah, I see . .
>
>
>> And you can of course do all the above as a one-liner.
>
>
> Yes.
>
>
>> Is that what you wanted?
>
>
> Exactly except I meant:
>
> Result <- C[C > threshold]
>
> Thanks!
>
> Phil.
>
>
>> -----Original Message-----
>> From: R-help <r-help-bounces using r-project.org> On Behalf Of Philip
>> Rhoades
>> via
>> R-help
>> Sent: Tuesday, June 20, 2023 11:38 AM
>> To: r-help using r-project.org
>> Subject: [R] Multiplying two vectors of the same size to give a third
>> vector
>> of the same size
>>
>> People,
>>
>> I am assuming that what I want to do is easier in R than say Ruby.
>>
>> I want to do what the Subject says ie multiply the cells in the same
>> position of two vectors (A and B) to give a result in the same
>> position
>> in a third vector (C) BUT:
>>
>> - The values in the cells of A and B are floats between 0.0 and 1.0 or
>> NULL
>>
>> - If there is a NULL in the multiplication, then the result in the
>> cell
>> for C is also a NULL
>>
>> - If there is a value less than (say) 0.01 in the multiplication, then
>> the result in the cell for C is 0.0
>>
>> Any suggestions appreciated!
>>
>> Phil.
>>
>> --
>> Philip Rhoades
>>
>> PO Box 896
>> Cowra NSW 2794
>> Australia
>> E-mail: phil using pricom.com.au
>>
>> ______________________________________________
>> 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.
>>
>> ______________________________________________
>> 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.
--
Philip Rhoades
PO Box 896
Cowra NSW 2794
Australia
E-mail: phil using pricom.com.au
More information about the R-help
mailing list