如何打印 r notebook 文档中的特定行
How to print specific rows in an r notebook document
我最近开始使用 R notebook 来注释我的脚本并与同事共享信息。我在下面创建了一个类似于 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")
在 Region == Alpha
中打印 FirstPt_vs_LastPt
的值。然后我必须制作一个新的代码块,键入相同的内容,并将 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 …
并且可以将输出全部打印在一页上,这意味着我不会将输出滚动到多个页面,让我的读者在一页上看到它们更有意义。
您可以使用拆分函数 split(data, Region)
,它将 return 像这样:
$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
我修改了您的代码以将 'beta' 放入数据框中。另外,尽量避免使用像 t
这样的函数名称作为变量名称。
我最近开始使用 R notebook 来注释我的脚本并与同事共享信息。我在下面创建了一个类似于 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")
在 Region == Alpha
中打印 FirstPt_vs_LastPt
的值。然后我必须制作一个新的代码块,键入相同的内容,并将 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 …
并且可以将输出全部打印在一页上,这意味着我不会将输出滚动到多个页面,让我的读者在一页上看到它们更有意义。
您可以使用拆分函数 split(data, Region)
,它将 return 像这样:
$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
我修改了您的代码以将 'beta' 放入数据框中。另外,尽量避免使用像 t
这样的函数名称作为变量名称。