Как напечатать заданные c строк в документе r блокнота - PullRequest
0 голосов
/ 24 января 2020

Я недавно начал использовать блокнот R, чтобы комментировать мой сценарий и делиться информацией с коллегами. У меня есть кадр данных, похожий на data, созданный ниже:

t <- data.frame(test=c("FirstPt_vs_LastPt", "FirstPt_vs_First3", "FirstPt_vs_First5", 
       "FirstPt_vs_First7", "FirstPt_vs_First10"))
n <- 5
test <- do.call("rbind", replicate(n,t,simplify=F))
Element <- rep(c("Copper", "Lead", "Zinc", "Bor", "Mag"), each = 5)
Region <- rep("alpha", 25)
p.value <- data.frame(p.value=sample(1:100,50,replace = T))

data <- cbind(test, Element, Region, p.value)

- это все наблюдения для Region==Alpha. В том же кадре данных у меня есть тот же список наблюдений для нескольких других Regions. Например, мы скажем, что другие Regions включают Beta и Charlie. Я использовал: subset(data, test == "FirstPt_vs_LastPt" & Region == "Alpha"), чтобы напечатать значения FirstPt_vs_LastPt в Region == Alpha. Затем мне нужно создать новый фрагмент кода, ввести то же самое и изменить Alpha на Beta, чтобы получить результаты для этого региона.

Есть ли способ собрать все строки в test, которые равны FirstPt_vs_LastPt, и напечатать результаты для каждого уникального Region следующим образом?:

Alpha

test                  Element   p.value
FirstPt_vs_LastPt      Copper    … 
FirstPt_vs_LastPt      Lead      … 
FirstPt_vs_LastPt      Zinc      …
FirstPt_vs_LastPt      Bor       … 
FirstPt_vs_LastPt      Mag       … 

Beta

test                  Element   p.value
FirstPt_vs_LastPt      Copper    … 
FirstPt_vs_LastPt      Lead      … 
FirstPt_vs_LastPt      Zinc      …
FirstPt_vs_LastPt      Bor       … 
FirstPt_vs_LastPt      Mag       … 

Charlie

test                  Element   p.value
FirstPt_vs_LastPt      Copper    … 
FirstPt_vs_LastPt      Lead      … 
FirstPt_vs_LastPt      Zinc      …
FirstPt_vs_LastPt      Bor       … 
FirstPt_vs_LastPt      Mag       … 

И может ли вывод будет напечатан на одной странице, то есть у меня нет вывода для прокрутки нескольких страниц, для моих читателей было бы больше смысла видеть их все на одной странице.

1 Ответ

0 голосов
/ 25 января 2020

Вы можете использовать функцию разделения split(data, Region), которая будет возвращать что-то вроде этого:

$alpha
                 test Element Region p.value
1   FirstPt_vs_LastPt  Copper  alpha      28
2   FirstPt_vs_First3  Copper  alpha      88
3   FirstPt_vs_First5  Copper  alpha      16
4   FirstPt_vs_First7  Copper  alpha       8
...

$beta
                 test Element Region p.value
31  FirstPt_vs_LastPt  Copper   beta      44
32  FirstPt_vs_First3  Copper   beta      20
33  FirstPt_vs_First5  Copper   beta      89
34  FirstPt_vs_First7  Copper   beta      87

Я изменил ваш код, чтобы получить бета-версию в кадре данных. Также старайтесь избегать использования имен функций, таких как t, для имен переменных.

...