а) Так как вы можете получить доступ к каждому элементу вашей продукции отдельно (например, cor.test()["statistic"]
, чтобы получить т-значение из вашей корреляции.), Вы можете просто написать функцию, чтобы поместить каждый из элементов, которые Вас интересуют в таблицу, затем выведите его с помощью Markdown в Word.
Например, в вашем Markdown документа Предположим, у вас есть эти данные:
title: "stackexchange"
author: "you"
date: "September 13, 2015"
output: word_document
---
```{r setup, include=FALSE, message = FALSE, echo = FALSE}
library(knitr)
set.seed(1)
source("~/Dropbox/R_Default/MyRTools/DinkyTools/EmptyFrame.R")
df <- data.frame(a = runif(n = 100, min = -1000, max = 1000),
b = rnorm(n = 100, mean = 0, sd = 500),
c = rlogis(n = 100, location = 50, scale = 100))
table_cols <- c(correlation = "character",
estimate = "numeric",
t_value = "numeric",
p_value = "numeric",
CI_l_95 = "numeric",
CI_u_95 = "numeric")
nvar <- c(1:3)
cmb <- combn(nvar , m = 2)
Затем использовать любой метод вы предпочитаете, чтобы создать пустой кадр данных для вашего стола. У меня есть свой собственный сценарий для создания пустых кадров данных, но все, что получает вам что-то вроде это нормально:
tbl <- EmptyFrame(rows = ncol(cmb), varnames_and_types = table_cols , print.opt = TRUE)
>correlation estimate t_value p_value CI_l_95 CI_u_95
1 <NA> NA NA NA NA NA
2 <NA> NA NA NA NA NA
3 <NA> NA NA NA NA NA
[1] "correlation : character"
[1] "estimate : numeric"
[1] "t_value : numeric"
[1] "p_value : numeric"
[1] "CI_l_95 : numeric"
[1] "CI_u_95 : numeric"
Усилия затем написать некоторые общие функции для вашего выхода. Например, если мне нравятся все попарные корреляции, я говорю что-то вроде:
for(ii in 1 : nrow(tbl)){
tbl$correlation[ ii ] <- paste("cor.test of", names(df)[cmb[ 1, ii] ], " with ", names(df)[cmb[ 2, ii] ])
tbl$estimate[ ii ] <- round(as.numeric(cor.test (df[ , cmb[ 1, ii ] ], df[ , cmb[2 , ii] ])[[ "estimate" ]]), 2)
tbl$t_value[ ii ] <- round(as.numeric(cor.test (df[ , cmb[ 1, ii ] ], df[ , cmb[2 , ii] ])[[ "statistic" ]]) , 2)
tbl$p_value[ ii ] <- round(as.numeric(cor.test (df[ , cmb[ 1, ii ] ], df[ , cmb[2 , ii] ])[[ "p.value" ]]), 2)
tbl$CI_l_95[ ii ] <- round(cor.test (df[ , cmb[ 1, ii ] ], df[ , cmb[2 , ii] ])[[ "conf.int" ]][1] , 2)
tbl$CI_u_95[ ii ] <- round(cor.test (df[ , cmb[ 1, ii ] ], df[ , cmb[2 , ii] ])[[ "conf.int" ]][2], 2)
}
```
Это дает вам таблицу, которая будет компилировать в Markdown на слово.
```{r}
kable(tbl)
|correlation | estimate| t_value| p_value| CI_l_95| CI_u_95|
|:----------------------|--------:|-------:|-------:|-------:|-------:|
|cor.test of a with b | 0.09| 0.88| 0.38| -0.11| 0.28|
|cor.test of a with c | -0.17| -1.74| 0.08| -0.36| 0.02|
|cor.test of b with c | -0.02| -0.23| 0.82| -0.22| 0.17|
```
b) Да. Как правило, вы используете apply(X, MARGIN, FUN, ...)
для запуска функций по всем столбцам фрейма данных.
c) Кажется, вы действительно будете любить, используя Markdown.
Можете ли вы показать какой-то желаемый результат? То, что вы описываете, конечно, возможно, но зависит от того, что именно вы делаете. Хотя я знаю, что есть пакеты для r и слова, я лично использую xtable для записи в html-файл (так как это легко копировать, когда вы довольны результатом). – Heroka
См. [R markdown] (http://rmarkdown.rstudio.com/) – zx8754
@Heroka, выход HTML звучит отлично! Например, для тестов с единичным корнем таблица должна выводить результат каждой переменной (столбца) без тренда, с константой и константой и трендом плюс каждая t-статистика и p-значение. Я использовал AIC для тестирования. Я думаю, что маркировка p-значений тоже не так проста? – Christopher