blazej
blazej

Reputation: 1788

Inline results (tests, descriptives etc) with RMarkdown

I posted this question a couple of minutes ago and it got instant minuses so I figured that it was stupid and deleted it. After reconsideration I still can think of a solution.

This might be due I'm new to R, coding in general, and all those things that are not point and click analysis in SPSS followed by MS Word description of results.

So please forgive me if the answer is basic - I clearly lack intelligence or can't find proper wording for a successful search.


I'm looking for a way to automatically (in order to reduce chance of mistyping errors) pass test results into text (within rmarkdown written in rstudio).

I'm wondering if it's possible to include results from R functions within plain text? If yes, is it matter of markdown formatting or do I need some additional R packages?

For example if I want to describe results of a simple anova

set.seed(111)
y = rnorm(18, 0, 1) 
x = rnorm(18, 1, 1)
a = c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3)

df<- data.frame(a, x, y)

anova<- aov(x~a)
summary(anova)


            Df Sum Sq Mean Sq F value Pr(>F)
a            1   0.39  0.3882   0.178  0.678
Residuals   16  34.84  2.1775    

Instead of writing by hand:

"We conducted a one way anova that showed no effect of a over x (F(1;16)=0.93; p=0.347 (ns)

I'd like to go with (or anything similar):

"We conducted a one way anova that showed no effect of a over x code pasting results in proper format"

I know I can use `r followed by a function to inline simple results, but it's still not clear if this would work for formatted tests and if so, how.

The more general the solution the better - as I'm describing mostly linear models, mixed linear models and lot's of descriptive statistics.

Once again, sorry if it's too basic and not worth answering - I can delete it again if anyone comments so. Regards

Upvotes: 2

Views: 1384

Answers (2)

blazej
blazej

Reputation: 1788

While method posted by @shadow would work for any result, for the purpose of my research a much simpler and quicker way is by using apa package developed by @dgromer at https://github.com/dgromer/apa

For the example given in my original question, posting an inline result from one way anova

anova<- aov(x~a)

requires only one line of code

devtools::install_github("dgromer/apa")    
anova_apa(anova, a) # where "a" is effect name

and produces an inline text as this: F(1, 16) = 0.18, p = .678, petasq = .01

Upvotes: 2

shadow
shadow

Reputation: 22293

You have to extract the different statistics yourself and combine them. For the anova example you show above, something like this should get you started:

F(`r summary(anova)[[1]][1, "Df"]`; `r summary(anova)[[1]][2, "Df"]`)=`r format(summary(anova)[[1]][1, "F value"], digits = 2, nsmall = 2)`;

In order to extract the statistics, you should have a look at the help files. Often they contain detailed descriptions of the return value. Alternatively you can just have a look at the names of your results. In your example that is names((anova)) and names(summary(anova)[[1]]).

Upvotes: 3

Related Questions