Hello!
Here is a toy tibble problem:
xt <-
tibble(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret"))
str(xt)
Classes ?tbl_df?, ?tbl? and 'data.frame': 4 obs. of 4 variables:
$ x: chr "A" "B" "C" "D"
$ y: int 1 2 3 4
$ z: num 0.3246 0.0504 0.339 0.4872
$ a: chr "dog" "cat" "tree" "ferret"
#No surprise
xt %>% mean
[1] NA
Warning message:
In mean.default(.) : argument is not numeric or logical: returning NA
#surprised!
mean(xt[2:3])
[1] NA
Warning message:
In mean.default(xt[2:3]) : argument is not numeric or logical: returning NA
xt[, 2:3] %>% mean
[1] NA
Warning message:
In mean.default(.) : argument is not numeric or logical: returning NA
I have a feeling that I'm doing something silly wrong. Has anyone run into
this, please? I saw something like this on this list, but didn't see a
solution.
Thanks,
Erin
Erin Hodgess, PhD
mailto: erinm.hodgess at gmail.com
[[alternative HTML version deleted]]
I don't know tibble, so I'll do the same with a plain data frame:
a
data.frame(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret"))> a
x y z a
1 A 1 -0.08264865 dog
2 B 2 0.32344426 cat
3 C 3 -0.80416061 tree
4 D 4 1.27052529 ferret> mean(a[2:3])
[1] NA
Warning message:
In mean.default(a[2:3]) : argument is not numeric or logical: returning
NA> mean(as.matrix(a[2:3]))
[1] 1.338395
The reason you get an error on mean(a[2:3]) is that a[2:3] is still a data
frame (a special list) and you cannot simply apply mean to a list. You need
to first convert to a matrix or vector which can then be fed to mean().
Peter
On Thu, Sep 20, 2018 at 5:50 PM Erin Hodgess <erinm.hodgess at gmail.com>
wrote:
> Hello!
>
> Here is a toy tibble problem:
>
> xt <-
>
tibble(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret"))
> str(xt)
> Classes ?tbl_df?, ?tbl? and 'data.frame': 4 obs. of 4 variables:
> $ x: chr "A" "B" "C" "D"
> $ y: int 1 2 3 4
> $ z: num 0.3246 0.0504 0.339 0.4872
> $ a: chr "dog" "cat" "tree"
"ferret"
> #No surprise
> xt %>% mean
> [1] NA
> Warning message:
> In mean.default(.) : argument is not numeric or logical: returning NA
> #surprised!
> mean(xt[2:3])
> [1] NA
> Warning message:
> In mean.default(xt[2:3]) : argument is not numeric or logical: returning NA
> xt[, 2:3] %>% mean
> [1] NA
> Warning message:
> In mean.default(.) : argument is not numeric or logical: returning NA
>
> I have a feeling that I'm doing something silly wrong. Has anyone run
into
> this, please? I saw something like this on this list, but didn't see a
> solution.
>
> Thanks,
> Erin
>
>
> Erin Hodgess, PhD
> mailto: erinm.hodgess at gmail.com
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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]]
Please see inline below. n 09/21/2018 01:07 PM, Peter Langfelder wrote:> I don't know tibble, so I'll do the same with a plain data frame: > > a > data.frame(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret")) >> a > x y z a > 1 A 1 -0.08264865 dog > 2 B 2 0.32344426 cat > 3 C 3 -0.80416061 tree > 4 D 4 1.27052529 ferret >> mean(a[2:3]) > [1] NA > Warning message: > In mean.default(a[2:3]) : argument is not numeric or logical: returning NA >> mean(as.matrix(a[2:3])) > [1] 1.338395 > > The reason you get an error on mean(a[2:3]) is that a[2:3] is still a data > frame (a special list) and you cannot simply apply mean to a list. You need > to first convert to a matrix or vector which can then be fed to mean().Perhaps sapply(a[2:3],mean)? cheers, Rolf> > Peter > > > On Thu, Sep 20, 2018 at 5:50 PM Erin Hodgess <erinm.hodgess at gmail.com> > wrote: > >> Hello! >> >> Here is a toy tibble problem: >> >> xt <- >> tibble(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret")) >> str(xt) >> Classes ?tbl_df?, ?tbl? and 'data.frame': 4 obs. of 4 variables: >> $ x: chr "A" "B" "C" "D" >> $ y: int 1 2 3 4 >> $ z: num 0.3246 0.0504 0.339 0.4872 >> $ a: chr "dog" "cat" "tree" "ferret" >> #No surprise >> xt %>% mean >> [1] NA >> Warning message: >> In mean.default(.) : argument is not numeric or logical: returning NA >> #surprised! >> mean(xt[2:3]) >> [1] NA >> Warning message: >> In mean.default(xt[2:3]) : argument is not numeric or logical: returning NA >> xt[, 2:3] %>% mean >> [1] NA >> Warning message: >> In mean.default(.) : argument is not numeric or logical: returning NA >> >> I have a feeling that I'm doing something silly wrong. Has anyone run into >> this, please? I saw something like this on this list, but didn't see a >> solution. >> >> Thanks, >> Erin
> xt[, 2:3] %>% colMeansy z 2.5000000 -0.4401625> xt[2] %>% colMeansy 2.5> t(xt[, 2]) %>% mean[1] 2.5 ------------------------- David L. Carlson Department of Anthropology Texas A&M University -----Original Message----- From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Peter Langfelder Sent: Thursday, September 20, 2018 8:08 PM To: Erin Hodgess <erinm.hodgess at gmail.com> Cc: r-help <r-help at r-project.org> Subject: Re: [R] tibble question with a mean I don't know tibble, so I'll do the same with a plain data frame: a data.frame(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret"))> ax y z a 1 A 1 -0.08264865 dog 2 B 2 0.32344426 cat 3 C 3 -0.80416061 tree 4 D 4 1.27052529 ferret> mean(a[2:3])[1] NA Warning message: In mean.default(a[2:3]) : argument is not numeric or logical: returning NA> mean(as.matrix(a[2:3]))[1] 1.338395 The reason you get an error on mean(a[2:3]) is that a[2:3] is still a data frame (a special list) and you cannot simply apply mean to a list. You need to first convert to a matrix or vector which can then be fed to mean(). Peter On Thu, Sep 20, 2018 at 5:50 PM Erin Hodgess <erinm.hodgess at gmail.com> wrote:> Hello! > > Here is a toy tibble problem: > > xt <- > tibble(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret")) > str(xt) > Classes ?tbl_df?, ?tbl? and 'data.frame': 4 obs. of 4 variables: > $ x: chr "A" "B" "C" "D" > $ y: int 1 2 3 4 > $ z: num 0.3246 0.0504 0.339 0.4872 > $ a: chr "dog" "cat" "tree" "ferret" > #No surprise > xt %>% mean > [1] NA > Warning message: > In mean.default(.) : argument is not numeric or logical: returning NA > #surprised! > mean(xt[2:3]) > [1] NA > Warning message: > In mean.default(xt[2:3]) : argument is not numeric or logical: returning NA > xt[, 2:3] %>% mean > [1] NA > Warning message: > In mean.default(.) : argument is not numeric or logical: returning NA > > I have a feeling that I'm doing something silly wrong. Has anyone run into > this, please? I saw something like this on this list, but didn't see a > solution. > > Thanks, > Erin > > > Erin Hodgess, PhD > mailto: erinm.hodgess at gmail.com > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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 at 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.
Since you are using tibbles you may want to go whole-hog and use the dplyr package as well.> xt <-tibble(x=LETTERS[1:4],y=1:4,z=log2(1:4),a=c("dog","cat","tree","ferret"))> xt %>% summarize(yMean=mean(y), zMean=mean(z), aLast=last(a))# A tibble: 1 x 3 yMean zMean aLast <dbl> <dbl> <chr> 1 2.5 1.15 ferret Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Sep 20, 2018 at 5:50 PM, Erin Hodgess <erinm.hodgess at gmail.com> wrote:> Hello! > > Here is a toy tibble problem: > > xt <- > tibble(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret")) > str(xt) > Classes ?tbl_df?, ?tbl? and 'data.frame': 4 obs. of 4 variables: > $ x: chr "A" "B" "C" "D" > $ y: int 1 2 3 4 > $ z: num 0.3246 0.0504 0.339 0.4872 > $ a: chr "dog" "cat" "tree" "ferret" > #No surprise > xt %>% mean > [1] NA > Warning message: > In mean.default(.) : argument is not numeric or logical: returning NA > #surprised! > mean(xt[2:3]) > [1] NA > Warning message: > In mean.default(xt[2:3]) : argument is not numeric or logical: returning NA > xt[, 2:3] %>% mean > [1] NA > Warning message: > In mean.default(.) : argument is not numeric or logical: returning NA > > I have a feeling that I'm doing something silly wrong. Has anyone run into > this, please? I saw something like this on this list, but didn't see a > solution. > > Thanks, > Erin > > > Erin Hodgess, PhD > mailto: erinm.hodgess at gmail.com > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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]]
Nice! I didn?t realize you could do all that! Thanks! On Fri, Sep 21, 2018 at 10:32 AM William Dunlap <wdunlap at tibco.com> wrote:> Since you are using tibbles you may want to go whole-hog and use the dplyr > package as well. > > > xt <- > tibble(x=LETTERS[1:4],y=1:4,z=log2(1:4),a=c("dog","cat","tree","ferret")) > > xt %>% summarize(yMean=mean(y), zMean=mean(z), aLast=last(a)) > # A tibble: 1 x 3 > yMean zMean aLast > <dbl> <dbl> <chr> > 1 2.5 1.15 ferret > > > Bill Dunlap > TIBCO Software > wdunlap tibco.com > > On Thu, Sep 20, 2018 at 5:50 PM, Erin Hodgess <erinm.hodgess at gmail.com> > wrote: > >> Hello! >> >> Here is a toy tibble problem: >> >> xt <- >> tibble(x=LETTERS[1:4],y=1:4,z=rnorm(4),a=c("dog","cat","tree","ferret")) >> str(xt) >> Classes ?tbl_df?, ?tbl? and 'data.frame': 4 obs. of 4 variables: >> $ x: chr "A" "B" "C" "D" >> $ y: int 1 2 3 4 >> $ z: num 0.3246 0.0504 0.339 0.4872 >> $ a: chr "dog" "cat" "tree" "ferret" >> #No surprise >> xt %>% mean >> [1] NA >> Warning message: >> In mean.default(.) : argument is not numeric or logical: returning NA >> #surprised! >> mean(xt[2:3]) >> [1] NA >> Warning message: >> In mean.default(xt[2:3]) : argument is not numeric or logical: returning >> NA >> xt[, 2:3] %>% mean >> [1] NA >> Warning message: >> In mean.default(.) : argument is not numeric or logical: returning NA >> >> I have a feeling that I'm doing something silly wrong. Has anyone run >> into >> this, please? I saw something like this on this list, but didn't see a >> solution. >> >> Thanks, >> Erin >> >> >> Erin Hodgess, PhD >> mailto: erinm.hodgess at gmail.com >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at 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. >> > > --Erin Hodgess, PhD mailto: erinm.hodgess at gmail.com [[alternative HTML version deleted]]