On 01/27/2015 02:54 AM, Bert Gunter wrote:
Huh??
ifelse(TRUE, a <- 2L, a <- 3L)
[1] 2
a
[1] 2
Please clarify.
In Bioconductor ifelse() is a generic function (with methods for Rle
objects) so all its arguments are evaluated before dispatch can
happen. You can reproduce with:
setGeneric("i
Hi,
Not sure if the following is what you look for:
>x <- c(1:10, NA, 12:20)
>sum(x[!is.na(x)])
--
View this message in context:
http://r.789695.n4.nabble.com/Sum-function-and-missing-values-need-to-mimic-SAS-sum-function-tp4702344p4702392.html
Sent from the R help mailing list archive at N
Maybe this is due to the usage of rep() in ifelse():
f.rep <- function(ans){ans <- rep(ans,1);return(ans)}
f <- function(ans){return(ans)}
f(a <- 123) # no print here
f.rep(a <- 123) # prints:
# [1] 123
On 27 January 2015 at 11:54, Bert Gunter wrote:
> Huh??
>
>> ifelse(TRUE, a <- 2L, a <- 3L)
Huh??
> ifelse(TRUE, a <- 2L, a <- 3L)
[1] 2
> a
[1] 2
Please clarify.
-- Bert
Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374
"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
Clifford Stoll
On Mon, Jan 26, 2015 at 2:22 PM, Herv
Hi Martin,
On 01/26/2015 04:45 AM, Martin Maechler wrote:
Jim Lemon
on Mon, 26 Jan 2015 11:21:03 +1100 writes:
> Hi Allen, How about this:
> sum_w_NA<-function(x) ifelse(all(is.na(x)),NA,sum(x,na.rm=TRUE))
Excuse, Jim, but that's yet another "horrible misuse of ifelse()"
J
On 27/01/15 13:42, Boris Steipe wrote:
sum(x, na.rm=!all(is.na(x)))
That's the kind of idiom that brings the poor chap who has to maintain it to
tears.
;-)
It looks perfectly lucid to me. If you think that that's obscure code,
you ain't been around! :-)
cheers,
Rolf Turner
--
Rolf
> sum(x, na.rm=!all(is.na(x)))
That's the kind of idiom that brings the poor chap who has to maintain it to
tears.
;-)
__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read
Hi,
To those who pointed out my mistake, thanks. Using ifelse may not
return a sensible arithmetic sum.
Jim
__
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 guid
ginal Message-
From: Sven E. Templer [mailto:sven.temp...@gmail.com]
Sent: Monday, January 26, 2015 6:56 AM
To: Martin Maechler
Cc: Jim Lemon; r-help mailing list; Allen Bingham
Subject: Re: [R] Sum function and missing values --- need to mimic SAS sum
function
you can also define 'na.rm
Templer is appealing in its
simplicity.
Allen
-Original Message-
From: MacQueen, Don [mailto:macque...@llnl.gov]
Sent: Monday, January 26, 2015 1:03 PM
To: Allen Bingham; r-help@r-project.org
Subject: Re: [R] Sum function and missing values --- need to mimic SAS sum
function
I'm a little p
In case anyone wonders, this behavior is expected and consistent with
the note "the sum of an empty set is zero, by definition" in
help("sum"), i.e.
> x <- numeric(0)
> str(x)
num(0)
> sum(x)
[1] 0
Analogously, prod(numeric(0)) gives 1.0.
To OP, if you're in the end of the day is after the sam
Try with na.rm=TRUE.
On Jan 26, 2015 4:04 PM, "MacQueen, Don" wrote:
> I'm a little puzzled by the assertion that the result is 0.0 when all the
> elements are NA:
>
> > sum(NA)
> [1] NA
>
> > sum(c(NA,NA))
> [1] NA
>
> > sum(rep(NA, 10))
> [1] NA
>
> > sum(as.numeric(letters[1:4]))
> [1] NA
> Wa
I'm a little puzzled by the assertion that the result is 0.0 when all the
elements are NA:
> sum(NA)
[1] NA
> sum(c(NA,NA))
[1] NA
> sum(rep(NA, 10))
[1] NA
> sum(as.numeric(letters[1:4]))
[1] NA
Warning message:
NAs introduced by coercion
Considering that the example snippet of code has seve
you can also define 'na.rm' in sum() by 'NA state' of x (where x is
your vector holding the data):
sum(x, na.rm=!all(is.na(x)))
On 26 January 2015 at 13:45, Martin Maechler
wrote:
>> Jim Lemon
>> on Mon, 26 Jan 2015 11:21:03 +1100 writes:
>
> > Hi Allen, How about this:
>
>
> Jim Lemon
> on Mon, 26 Jan 2015 11:21:03 +1100 writes:
> Hi Allen, How about this:
> sum_w_NA<-function(x) ifelse(all(is.na(x)),NA,sum(x,na.rm=TRUE))
Excuse, Jim, but that's yet another "horrible misuse of ifelse()"
John Fox's reply *did* contain the "proper" solution
Ouch. Please avoid ifelse() in non-vectorized contexts. John Fox has the right
idea.
-pd
On 26 Jan 2015, at 01:21 , Jim Lemon wrote:
> Hi Allen,
> How about this:
>
> sum_w_NA<-function(x) ifelse(all(is.na(x)),NA,sum(x,na.rm=TRUE))
>
> Jim
>
>
> On Mon, Jan 26, 2015 at 10:21 AM, Allen Bing
Hi Allen,
How about this:
sum_w_NA<-function(x) ifelse(all(is.na(x)),NA,sum(x,na.rm=TRUE))
Jim
On Mon, Jan 26, 2015 at 10:21 AM, Allen Bingham wrote:
> I understand that in order to get the sum function to ignore missing values
> I need to supply the argument na.rm=TRUE. However, when summing
Dear Allen,
This seems reasonably straightforward to me, suggesting that I might not
properly understand what you want to do. How about something like the following?
> mysum <- function(...){
+ x <- c(...)
+ if (all(is.na(x))) NA else sum(x, na.rm=TRUE)
+ }
> mysum(1, 2, 3, NA)
[1] 6
> mysu
I understand that in order to get the sum function to ignore missing values
I need to supply the argument na.rm=TRUE. However, when summing numeric
values in which ALL components are "NA" ... the result is 0.0 ... instead of
(what I would get from SAS) of NA (or in the case of SAS ".").
Accordingl
19 matches
Mail list logo