Luo Fei Site

Welcome to My blog:

  • I am a public health reasearcher worked in Chongqing China.
  • I am learing using R language for statistical analysis in infectious diseses.
  • I will record the issues encountered during the learning process as well as my solutions. You are welcome to leave your valuable comments
  • Many thanks for your visting !

R社交网络分析包在传染病传播链可视化的应用

初衷 在这次疫情处理过程中,了解到在梳理传播链的过程中,很多时候仍然是手工在powerpoint等软件绘制传播链的。采用这种方式的优点能够在图中根据设计者需要加入较多的信息,比如:人员大致位置分布,接触的途径和强度等信息。不足之处在于,在链条上节点(感染者)较少的时候还能够梳理得很明确,但一旦节点达到一定数量,其中关系复杂度将呈几何倍数增加(比如1人传多个,1人与多个感染者有接触之类)。 在这种情况下。单纯的手工整理,将耗费非常多的脑力。最严重的缺点是,当现场流调信息变更,对链条进行修订的时,其中一个节点或链接的变化,会因连锁作用导致整个链条的变化。节点越多,变化的影响范围越大,越复杂,就像整理线头一样。当感染者人数上升到一定数量时,手动整理已经变成了一件难以完成的事情。由于本人对R的热衷,探索了一下能不能使用软件自动化链就是自己懒嘛的方式绘制传播,使用igraph,ggraph和networkD3最终效果如下面几张图,个人觉得还是networkD3炫酷的互动效果最好。 具体制作过程 参见我使用的3个包的说明。。。。。详细步骤待补充。 数据 节点数据 节点数据里面只需要包含所有感染者的基本信息,比如编号,姓名,类别等等。 边数据 边数据最基础的要求为,节点数据左右感染者的对应关系,简单说就像Excel两列,第一列from, 第二列to,代表每一行两个感染者的关系,从谁传播到谁,当然这些资料需要辛苦在现场的流调专家们提供。 可视化 igraph 首先使用graph_from_data_frame(d =line, vertices = node, directed = T)将节点和边转换成igraph,就可以直接plot第一张图, 参数自己可以调节。 netwokd3 个人最喜欢的效果,使用igraph_to_networkD3命令,将igraph数据转换一下,就可以使用simpleNetwork,forceNetwork,sankeyNetwork(画出交互性网络图了。试验了下,手机浏览器一样可以互动,包括拖动节点,放大,移动等,非常棒的体验。 {"x":{"links":{"source":[2,8,10,12,3,7,56,2,14,13,1,56,0,2,2,2,2,3,4,5,6,7,7,1,56,1,9,2,11,6,24,3,56,7,12,12,1,12,12,6,7,10,15,15,7,28,30,12,7,56,16,14,14,17,37,18,53,2,56,1,5,3,6],"target":[10,11,12,12,13,14,15,16,17,18,19,19,1,20,21,22,23,24,25,26,27,28,29,2,2,30,31,32,33,34,35,35,36,37,38,39,3,40,41,42,43,44,45,46,47,47,47,48,49,4,50,51,52,53,53,54,55,5,6,7,8,9,9],"value":[8,4,8,3,8,8,4,8,8,4,8,3,3,8,8,8,8,8,8,8,8,8,8,8,3,4,8,8,8,8,3,8,4,8,6,8,3,8,8,8,8,8,8,8,8,3,3,8,8,4,8,8,8,8,3,8,4,8,4,4,8,4,2],"colour":["#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666"]},"nodes":{"name":["0号","1号","2号","3号","4号","5号","6号","7号","8号","9号","10号","11号","12号","13号","14号","15号","16号","17号","18号","19号","20号","21号","22号","23号","24号","25号","26号","27号","28号","29号","30号","31号","32号","33号","34号","35号","36号","37号","38号","39号","40号","41号","42号","43号","44号","45号","46号","47号","48号","49号","50号","51号","52号","53号","54号","55号","56号"],"group":[2,2,2,1,7,2,1,6,5,1,2,5,8,4,3,9,2,3,4,2,2,2,2,2,1,7,2,1,6,6,6,1,2,5,1,1,2,3,8,8,8,8,1,6,2,9,9,6,8,6,2,3,3,3,4,3,2],"nodesize":[200,150,30.6,34,35.6,43.1,40.5,10.8,46.9,44.5,42.8,46.8,22.8,27.3,25.4,18.7,11,14.2,23.1,12.4,31.3,11.1,21.7,11.6,11.2,1.3,24,48.2,33.1,2.9,29.2,15.5,45.1,38,23.8,44.4,32.7,15,36,41.2,4.8,22.9,1.6,38.9,41.1,38.6,43.3,9.9,2.1,46.1,12,42.3,1.8,18.9,40.6,27.9,20]},"options":{"NodeID":"name","Group":"group","colourScale":"d3.scaleOrdinal(d3.schemeCategory20);","fontSize":12,"fontFamily":"serif","clickTextSize":30,"linkDistance":50,"linkWidth":"function(d) { return Math.sqrt(d.value); }","charge":-30,"opacity":2,"zoom":true,"legend":false,"arrows":true,"nodesize":true,"radiusCalculation":" Math.sqrt(d.nodesize)+6","bounded":false,"opacityNoHover":1,"clickAction":null}},"evals":[],"jsHooks":[]} {"x":{"links":{"source":[2,8,10,12,3,7,56,2,14,13,1,56,0,2,2,2,2,3,4,5,6,7,7,1,56,1,9,2,11,6,24,3,56,7,12,12,1,12,12,6,7,10,15,15,7,28,30,12,7,56,16,14,14,17,37,18,53,2,56,1,5,3,6],"target":[10,11,12,12,13,14,15,16,17,18,19,19,1,20,21,22,23,24,25,26,27,28,29,2,2,30,31,32,33,34,35,35,36,37,38,39,3,40,41,42,43,44,45,46,47,47,47,48,49,4,50,51,52,53,53,54,55,5,6,7,8,9,9],"value":[8,4,8,3,8,8,4,8,8,4,8,3,3,8,8,8,8,8,8,8,8,8,8,8,3,4,8,8,8,8,3,8,4,8,6,8,3,8,8,8,8,8,8,8,8,3,3,8,8,4,8,8,8,8,3,8,4,8,4,4,8,4,2]},"nodes":{"name":["0号","1号","2号","3号","4号","5号","6号","7号","8号","9号","10号","11号","12号","13号","14号","15号","16号","17号","18号","19号","20号","21号","22号","23号","24号","25号","26号","27号","28号","29号","30号","31号","32号","33号","34号","35号","36号","37号","38号","39号","40号","41号","42号","43号","44号","45号","46号","47号","48号","49号","50号","51号","52号","53号","54号","55号","56号"],"group":["0号","1号","2号","3号","4号","5号","6号","7号","8号","9号","10号","11号","12号","13号","14号","15号","16号","17号","18号","19号","20号","21号","22号","23号","24号","25号","26号","27号","28号","29号","30号","31号","32号","33号","34号","35号","36号","37号","38号","39号","40号","41号","42号","43号","44号","45号","46号","47号","48号","49号","50号","51号","52号","53号","54号","55号","56号"]},"options":{"NodeID":"name","NodeGroup":"name","LinkGroup":null,"colourScale":"d3.scaleOrdinal(d3.schemeCategory20);","fontSize":16,"fontFamily":null,"nodeWidth":15,"nodePadding":10,"units":"Letter(s)","margin":{"top":null,"right":null,"bottom":null,"left":null},"iterations":20,"sinksRight":true}},"evals":[],"jsHooks":[]} ggraph ggraph基本研用了ggplot2绘图的方式,画出来的图也相对更漂亮。首先使用tidygraph包将igraph类型的数据转换为ggraph更合适的元数据。然后可以愉快地使用ggplot2的方式画图了。

March 25, 2022 · Luo Fei

R爬上海疫情数据简单可视化分析(4月7日更新)

今天本地的疫情终于没有增加,抽了点时间关注其他地区的疫情形势。看官方通报的数据,对曾经的模范城市的疫情有兴趣,决定来简单看看。 1 数据获取 1.1 数据来源 要获取准确的数据,当然是上官方网站。打开上海市卫健委的官网(https://wsjkw.sh.gov.cn/xwfb/index.html),疫情数据公告都在“新闻发布”栏目中,再仔细一看,疫情信息的标题中就包含了所有新增、确诊数据。真是太方便了。新闻页面也是连续的以_[num]为页码的编号,这种页面爬起来不要太省事。 1.2 R包 首先加载需要用到的包,主要使用rvest包获取静态网页信息,谷歌浏览器selectorgadget插件获取需要信息的节点,tidyverse整理数据,绘图,lubridate包处理日期变量。 library(rvest) library(tidyverse) library(lubridate) library(readxl) library(openxlsx) library(ggforce) library(mgcv) 1.3 主页信息获取 使用selectorgadget在网页上找到需要的变量“时间”和“标题”,对应的node分别是.time和.list-data a,使用rvest抓取后,转为文本存储在列表中。 ## 设置url url <- "https://wsjkw.sh.gov.cn/xwfb/index.html" ## 获取首页信息 content <- read_html(url) reportdate <- content %>% html_nodes(".time") %>% html_text() %>% as.Date.character() title <- content %>% html_nodes(".list-date a") %>% html_text() basedata <- tibble(reportdate = reportdate, title = title) 1.4 爬取所有数据 上海的疫情变化主要从3月开始,但为了查看之前的变化,是否输入病例压力增大导致本次疫情,因此爬取了2到200页到的数据。改用purrr包的map_df函数爬取。 ##使用循环爬取2到200也网页信息 url_1 <- c("https://wsjkw.sh.gov.cn/xwfb/index.html", paste0("https://wsjkw.sh.gov.cn/xwfb/index_", c(2:200), ".html")) webfun_0 <- function(url){ webpage <- read_html(url) tibble( "reportdate" = webpage %>% html_nodes("....

March 24, 2022 · Luo Fei

基于Rmrakdwon的可重复文档  [draft]

对于一个公卫狗来说,很多工作都在分析数据、撰写报告总结的内容。这些文档有周报、月报、季报、年报。在使用R之前,经常会对同样架构的不同时间的的数据进行重复的分析和撰写。Rmarkdwon提供了非常便利的可重复复文档,简单来说就是根据跟新的数据库一键生成同样格式的文档。文档的类型可以是PDF和WORD。非常的便利。 1 Rmarkdown基础 1.1 markdown Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出HTML、PDF以及本身的.md格式的文件。因简洁、高效、易读、易写,Markdown被大量使用,如Github、Wikipedia、简书等。 Markdown已经是一种轻量化的语言,他的不足在于当需要转换为PDF或者WORD格式时有点力不从心了。针对这问题,目前供职与Rstudio的谢益辉大神在Markdown的基础上开发了rmarkdwon包。Rmarkdown的优点有: 具备markdown简单的文本标记语言; 相较于markdown有更丰富的文档排版能力; 可以在生成文档时直接运行插入的代码块,并将运行结果输出在最终文档中。 1.2 基本语法 Rmarkdown的基本语法与markdwon相同,几乎所有markdown能用的语法都可以在其中使用。 常用的markdown语法见表1.1,更详细的语法请参考Markdown官方教程 表1.1: Rmarkdown的优点 输入 结果 普通文本 普通文本 *斜体文本* 斜体文本 **加粗文本** 加粗文本 ***斜体加粗文本*** 斜体加粗文本 ~~删除线文本~~ 删除线文本 上标^文本^ 上标文本 `代码文本` 代码文本 # 一级标题 1.3 建立Rmarkdwon文件 在RStudio选择文件-新建-Rmarkdown就可以建立一个最简单的rmarkdown的模板。(图 1.1) 图1.1: 新建rmarkdown文件 新建文件后会弹出新的窗口,如图1.2所示。窗口中可以设置标题、作者和输出文件类型。在左边栏选择”From Template”会有更多的模板更选择。你也可以安装相应的R包扩展更多的模板。 图1....

March 3, 2022 · Luo Fei

20年前的坑  [draft]

这是自己20年前因暗黑破坏神和英雄无敌3游戏有感而创作的。。放这里存档! 1 启程 透过破烂的窗户,骑士萨德列看到的是象被泼上了黯淡的黑血的天空,墨一样的血慢慢的从天的尽头一直延伸到头顶。那样的死寂,如此的凄凉! 也不知是从什么时候开始世界变成了现在这个样子,萨德列只记得从有记忆开始就是这样,10年过去了,还是这样。想起父亲临终前对自己说的话“萨德列,我的儿子,记着我的话吧。到远方去,遥远的地方,在那里你的使命在召唤你。你是我的儿子,骑士之子,你的命运就此已经注定。”从此,萨德列就开始了流浪,从12岁开始自己就背着父亲的剑和盔甲开始了毫无目的的流浪,仿佛是没有尽头的流浪。10年的流浪…… 可他还是不知道父亲说的远方到底是哪里。他只知道从一个地方飘荡到另一个地方。 “远方,使命!” 一阵敲门声打断了萨德列的回忆。 “进来!” 旅馆的侍女打开门,端上一盘丰盛的晚餐。“先生,你的晚餐!”说完把盘子放在桌上,然后退了出去。萨德列坐下来,开始慢慢享用他的食物。一段辛苦的旅行中最美丽的事情,莫过与在旅馆舒服的洗个澡,再来一份精美的晚餐!最好还能有美酒!可是在这种小旅馆,也只能用这些下三滥厨师弄的东西来将就了。 夜深了,窗外的风呼呼的叫着,仿佛是垂死的精灵的呼吸。萨德列躺在床上,望着天花板,心里又开始了对父亲的思念。父亲总是那样富有智慧,高大的身影总是在心头一次又一次的浮现。他慈祥的脸上露出的笑容可以让自己忘掉所以的不幸与悲伤!萨德列起身拿出父亲的剑。锋利的剑身,被磨得光滑的剑柄。萨德列轻轻的抚摩着。“父亲的味道在散发,是你啊。父亲……” ……. 高大的树木,数不清的树木。漫天的雪花,鹅毛般的飘落。堆积在树上,林间的空地上!雪地上,一串脚印一直延伸到林子的深出。在脚印的尽头是一个靠在一棵参天大树下的人。凛冽的寒风像刀子般的刮着。革拉特已经逃亡了一星期了。整个星期都在这见鬼的森林里,怎么都走不出去,但这样也好。只有大雪才能让那些追踪的家伙也找不到他。革拉特坐在树下,望着漫天的飞雪。炯烁的眼睛凝视着雪花被风吹着打转,他伸出手接住雪花,看它们慢慢的在手中融化。他的嘴角露出一丝笑容,他站起身来,肩上的雪花簌簌的落下来,抬起头望了望天空,笑了笑,又往林子深处前进。他高大的身影慢慢的消失在树木的影子里。 第二天早晨,萨德列起床后在旅馆匆匆吃了点早餐就出去了。这个叫密拉达的小镇属于艾拉西亚王国,是一个龙蛇混杂的地方,各式各样的人都有。也有的不是人,精灵呀,矮人呀,吸血鬼……这片大陆的主要种族这里都有。萨德列来到一家酒馆,酒馆是个好地方,无论你想打听什么消息,或者你想了解一下这个地方的情况,做好的办法就是到这里的酒馆里去看看。这个酒馆的老板是个精灵,罕见的一个年老的精灵。绿色的长发随意地搭到在肩上,最引人注目的还是他那尖尖的耳朵了,让一看就知道是精灵。一身打扮象极了市侩的商贩。萨德列很奇怪,怎么精灵也学着做生意了。萨德列来到柜台前,要了杯葡萄酒,然后自行找了张凳子坐下来。他一边缓慢地品味着杯中的葡萄酒,一边装着随意地观察周围的食客。酒馆不大,大概有20几个人在里面。其中有个红胡子的矮人引起了萨德列的注意,还有就是一个一直呆在角落里一个人喝酒的人。看他的打扮象是一个法师或者炼金士。 突然,一群人恶恨恨地从门口冲进来,最前面的是一个身材高大的家伙,满脸的胡子乱刺刺的毡着,好象是被烧焦了。一群人用目光在酒馆的食客中搜索。最后停在了一个法师打扮的人身上。看上去像带头人的家伙,脸上露出憎恨的表情。他挥了挥手,手下都慢慢的拔出了刀,开始向法师打扮的人走近.酒馆里一些胆小的,怕惹事的都开始从门口跑了出去.那法师打扮的人却依然慢慢的吃着自己的食物,好象根本就不知道那群人的存在。待几个恶棍走到足够近的时候,挥舞着手中各式各样的武器向他扑去。萨德列坐在那里静静的看着这一切的发生.只见那法师打扮的人,手一扬一团火球打在冲在最前面的一个。把他打得直向后飞,撞在后面跟上来的几个身上.魔法的火焰在身上燃烧.几个撞到一起的人身上都着了火,在地上滚来滚去的大叫。但这并没有阻止后面的几个继续向前冲.法师又连续打出几个火球,又是几个人倒下去。可已经有几个到了他跟前。几把明晃晃的刀向他砍去。萨德列已经把自己的剑拿了出来,随时准备出鞘。只见那法师把酒杯里的酒泼出来,酒瞬间在他面前化成了一层冰护盾,几把刀全砍在护盾上。刀的主人也被反弹力震得后退,有一个的刀都脱了手。法师乘机又打出几个火球,又是几个人倒下。萨德列也挺惊讶的,看来这法师还不能小觑,居然还会这种等级的护盾魔法。进来的一群人已经剩下大概不到10个了。萨德列心想不用自己出手,他自己也可以应付了。突然,一只箭插在法师胸口.萨德列心里一惊,朝箭射来的方向望去,只见那个满脸胡子的大汉,手里拿着一把弓箭,冷笑着。大汉继续搭箭,萨德列却飞快拔出剑,象老鹰一般朝大汉冲去。全场人只见一道寒光闪过,大汉呆在那里。萨德列的剑已经在鞘里了。全场的人都楞住了!大汉的弓从中间断开,他眼中充满了恐惧与惊讶。全场的人都清晰的看见一道血痕从大汉眉心裂开.鲜血一下子喷了出来,然后慢慢的倒下。其他恶棍看着眼前的一切,还每反应过来,都还呆站着。萨德列飞快的向法师方向冲过去,随着几道剑光,又是几个恶棍倒下了。剩下的几个丢掉自己手中武器飞一样的跑了。 萨德列快步向法师走过去。法师手捂住胸口,脸上毫无血色。萨德列正要拿绷带给他止血时发现他已经开始使用治疗魔法了。过了大概一分种的样子。法师的脸已经渐渐恢复血色,显得红润了。萨德列刚想和他说话,那法师却开了个传送门走了。只留下他自己一个人站在乱七八糟的旅馆里。他苦笑了一下,自己费半天劲救了人却给自己找了个麻烦,结果自己却连一句感谢的话都没听到。他回到房间拿起自己的行李准备走了。他知道过不了多久就会有一大群人来找他的麻烦了。 萨德列走出小镇没多久,却发现自己又不知道该往哪儿走了。他来到一个叉路口,捡起一小截树枝,然后蹲下来把树枝立起来,树枝倒下了。他就朝着树枝倒下的方向前进。他心里知道,路就跟他的未来一样,自己不知道路的尽头是什么地方,就象不知道前方等待他的又是什么命运。但路是要走的,人也是要活下去的。 2 狼与人 革拉特从树林里出来时已经几乎成了一个雪人。他整理了一下衣服,上面的雪簌簌的掉了下来。他用锐利的眼神观察了一下四周,发现没什么异样的。心里才松了口气,总算把那些家伙摆脱了。 走出森林是一片旷野,放眼望去只能看见一些稀疏的小树林。这可不是一个逃亡的好地方,得赶快走出这里。革拉特知道过了这里就是一座高山了,在那里就好隐蔽了。他打起精神,继续向前走去。 革拉特正走在路上,突然一股危险的信号在脑海闪过,他急忙闪到一快稍微大点的岩石后面。他从岩石后面探出头看了看。远方一群恶狼,正向他的方向靠拢。“该死的,这种时候怎么遇到这群畜生。” 由于在森林的游荡了一个多星期,革拉特已经没多少体力了。 “怎么办怎么办?”革拉特脑子里闪过无数个念头,都被自己一一否决了。野外的狼群是最难对付的。它们大多都是饿了几天的,现在好不容易找到一个猎物怎么会轻易放弃。说不定它们已经跟踪他好久了,直到现在才开始动手的。 革拉特躲在岩石后面,发现自己居然能听到自己的心跳声。自己经历了无数次危险从来没有象现在这样感到无助,绝望。 “难道今天我就会死在这里?死在这些畜生嘴上?老天怎么会这样对我?我还有很多事情要做!” 一股风吹过来,风中带着野兽特有的味道,也是死亡的气味。革拉特已经能听到狼的呼吸声和细小的脚步声。他闭上眼睛,准备等待死亡的来临。当他闭上眼睛后,脑子一下子清醒很多了。耳朵听到的不光是狼的呼吸,还有风的声音,有雪花落下的声音,有自己还在跳动的心。脑中记起了自己的目标,自己的希望还有自己最想念的人的面庞。革拉特一下子醒了过来。 他睁开眼睛,拔出自己的刀,跳出岩石。面对着狼群,他缓缓地举刀,指向狼群。他全身的血都沸腾了。杀气从他的刀上蹦射出来。 狼群中最大的一只全身金色的狼,高高的站在狼群后面的一快岩石上。它向革拉特望了一眼,然后头昂向天空发出一声长啸。啸声在狼群中激起一遍回应,狼群也跟着嚎叫起来。接着慢慢的向革拉特靠拢。 革拉特把刀横在胸前,然后举向天空,双腿往地上一蹬,嘴中发出一声咆哮。声音在旷野里传播开去。狼群也被怔得停住了前移的脚步。但是只是稍微迟疑了一下,又开始一边发出低沉的声音一边移动。革拉特缓缓闭上眼,一边用身体感受狼群的一举一动一边聚集力量。 狼群移动到到离革拉特2,3米多远的地方就停住了前进的脚步。都漏出白森森的牙齿,耸立着颈部的毛,不停地发出低沉的呜呜。。。” 革拉特却满脸镇定的神情,而且还透露出肃穆的感觉。 狼和人都等待着最后的时刻到来。。。。 萨德列顺着树枝的方向走着,一路上脑子里总想着那个奇怪的法师的事情,不知道怎么的自己对他特别的好奇。这么多年的经验告诉他在这个世界里好奇心有时会害死一个人。可他还是抑制不住。走着走着,他停了下来,因为直觉告诉他附近就有那个法师的信息。他走进路旁的一的小树林,在林子中间一副令他万分吃惊的景象出现在他面前。 旷野…. 狼群…. 人……一个坚定的人。 为首的那头金狼在岩石上转了几圈,然后停了下来。它用异样的眼神盯了盯前面的人。接着,又昂起头发出一声嚎叫。 战斗的号角已经吹响,战鼓也擂响。革拉特从听到狼王的嚎叫时刻,一直紧闭的双眼猛地撑开。手中的刀也开始抖动,发出“呜呜```````````”的鸣叫。 站在革拉特最前面的几头狼早就耐不住了,箭一般的向革拉特扑过来。 刀象天空的明月一样划出一道美丽的白光。 红色的血从半空中洒落下来。点点斑斑落在革拉特的脸上,身上。 革拉特吐出嘴里的血,象一头猛虎一样扑进狼群。从狼身上喷射出的血雨点般的打在他身上。热血的腥味刺激着他的神经,革拉特挥舞着手中的刀,自己已经分不清身上的血哪些是自己的哪些是狼的`````````` 在一望无尽的旷野上,一群狼和一个人构建了一幅罕见的奇观。狼的悲嚎,人的咆哮从旷野中央象涟漪一样散开。  革拉特已经开始气喘吁吁了,拼杀了一个多小时本来已经不多的体力已经快要透支了。而狼群却显得越来越多。革拉特周围,被杀死的狼都只剩下些骨头。这些狼为了自己把死了的或受伤的狼全吃了。革拉特身上也是伤痕累累。周围的狼不停地向他进攻。一次又一次地。前面的倒下了,后面的把尸体拖出去,又继续扑上来。 …呼…呼..不行了,我不行了。这些狼怎么都杀不完。我要放弃了。奇迹,奇迹我现在最需要的就是奇迹了。” “唰唰!”又是两刀,两头扑上来的狼被砍翻在地。突然背后钻心般的痛,革拉特急忙转过身,唰```一刀挥过去。却砍了个空,他仔细一看,原来是那头狼王。自己周围的其他狼都停止了向他进攻。只在他周围围出一个圈。狼王在他面前来回的走动。两只眼睛死死地盯着他。 “决斗吗??”革拉特心想。 周围的狼群不断地发出嚎叫,仿佛是在为狼王喝彩,加油。 革拉特明白了,狼王是要建立自己在狼群中的威信,要找他这个垂死的人来决斗。 革拉特把心一横。双手把刀握在手里,刀尖遥指狼王。他知道自己已经没有多少体力了,要和这只开始一直在旁观战的狡猾的狼王决斗,硬拼下去只有死。心里不断地想对策。 狼王在革拉特面前2,3米的地方来回的徘徊。两只眼睛却一刻也没离开过革拉特的一举一动。它在寻找空隙一直没有进攻。 一狼一人,在旷野中相互对峙着。周围狼群的嚎叫此起彼伏。突然革拉特向狼王冲了过去。就要冲到时,突然脚下一滑跌到在地上。狼王象绷紧的弹簧一样飞一般地射向革拉特。嘴准确地咬向革拉特的咽喉。 这个时候,狼群也全安静了下来,周围突然一下变得异常的安静。 血,从狼王的嘴边流了出来。。。。 周围的狼群发出胜利的嚎叫。 狼王一动也不动的趴在革拉特的身上,它的眼中充满了诧异的神情。 一狼一人都趴在地上半天一动不动,狼群也停止了嚎叫。一只灰狼从狼群中走出来。慢慢走近革拉特。突然,狼王从地上飞了出来。革拉特用刀艰难地站了起来。狼群一下子沸腾了。那只灰狼走到狼王的身边,嗅了嗅。然后回过身盯着革拉特。它走到革拉特身边,围着他转了几圈。然后向狼群发出一声长啸。本来围着革拉特的狼群开始散开。然后在灰狼的带领下向远方跑去。 狼群散尽。革拉特一下子倒在地上。看着身边狼王的尸体,回想起刚才的时刻,真是九死一生。他在狼王的牙齿快刺破自己颈部血管的一瞬间,把自己的左手塞进狼王的口中的同时右手把刀捅进狼王的心脏。现在手上几个血孔还在不住的冒血。他自己感到奇怪的是,现在自己居然没感到害怕,却有一种兴奋的感觉。 革拉特包扎了一下伤口,然后就躺在一快岩石后面睡了。

January 14, 2022 · 1 min · Luo Fei

R随手记(1)  [draft]

加载常用的包 library(tidyverse) library(readxl) library(openxlsx) library(lubridate) 1 R基础相关 1.1 基础命令 1.1.1 set_names命令 set_names()命令可以很方便的创建带名称的向量,set_names(x, nm = x, ...)其中x表示需要赋名的变量,nm表示向量的名称,示例: set_names(1:4, letters[1:4]) # a b c d # 1 2 3 4 1.1.2 交集并集 interesect()求交集,union()并集,setdiff()补,结果如图1.1: 图1.1: R集合运算命令 1.2 数学公式测试 行内公式\(x^2+y^2=z^2\) 行间公式:\[f(x)=ax+b\] 1.3 逻辑运算符号 R中基础逻辑运算符号有(=;!=;>;<;>=;<=),返回的值是true和false,也可分别作为为数字1和0进行数学运算: x <- c(1, 2, 3, 4, 5, 6) x > 3 # [1] FALSE FALSE FALSE TRUE TRUE TRUE sum(x > 3) # [1] 3 1....

January 12, 2022 · Luo Fei

建站记录(踩坑心得)  [draft]

在繁忙的工作中,断断续续、跌跌撞撞地自学R语言,翻资料,查英文。这一段历程对于一个大叔来说,作实有点辛苦,值得记录。还记得第一次正式接触和使用R还是2015年在上海工作期间。那时候也没有深入的了解和学习,只是基础的学习了平实在工作中可能会使用的基础功能。真正认真开始学习是2019年新冠疫情暴发之初,因为要处理大量数据、分析、绘图、建模,所以认真花费了一段时间来学习。在学习过程中参考了不少大牛的教材,书籍和参考资料等。尤其要感谢一辉。从rmarkdown、bookdown、blogdown、knit,为了那个文学编程,害我还学习了lantex、html、css、pandoc等,可谓是一把辛酸泪啊😭。关于这段历程,后面还是计划开个新章好好记录。这篇文章主要记录下,自己使用blogdown+ hugo + netlify, 踩坑心得 建站历程。 关于blogdown blogdown的具体功能这里不赘述了,希望了解的请参考一辉大神的blogdown,我这里只是记录自己的心得坑: 踩坑记录 自定义“代码高亮”无效(待解决) 根据hugopaper的教程设置发现下面代码有效,设置后代码无highlight。 params: assets: disableHLJS: true 下面这段代码无效,设置后无法显示,上传到netfily同样无效。 markup: highlight: # anchorLineNos: true codeFences: true guessSyntax: true lineNos: true # noClasses: false style: monokai 在highlightjs 网站下载相关的css样式后,将喜欢的样式名称改为an-old-hope.min后放在网站根目录/assets/css可以更改高亮样式,但是建议选择黑暗模式的样式。现在还未找到在网站白天/黑夜模式切换下。css下载地址 更改样式后,白色字体貌似是hugo-paper主题重新定义了的,无法根据样式更改。待解决 baseURL 如果根据教程提示将baseURL改为在netfily上提供的域名,在用自己的域名解析后,次级链接仍然会链接到原netfily域名上 解决方案: 在config.yaml设置如下 baseURL: /

January 12, 2022 · Luo Fei

重庆市公共卫生医师规范化培训-寄生虫病

介绍 受邀参与重庆市公共卫生执业医师规范化培训工作,主要负责了寄生虫病概况和疟疾防控两个内容的讲解和培训。为此特编写了教材《重庆市公共卫生医师规范化培训-寄生虫病》。这本教材主要包括: 第 1 章主要介绍了寄生虫的生物学知识。 第 2 章主要介绍了寄生虫病的防治。 第 3章主要介绍全国主要寄生虫病流行概况。 第 4章主要介绍重庆市主要寄生虫病流行概况。 第 5章主要介绍疟疾的流行与防控概况。 第 6章主要介绍疟疾的基础知识。 第 7章主要介绍重庆市疟疾防控策略和措施。 点击图片阅读

January 9, 2022 · 1 min · Luo Fei

Monte Carlo method

1 蒙特卡洛法(Monte Carlo method)计算\(\pi\)的值 用随机函数runif()随机生成N个在1个单位正方形内的散点,根据三角公式筛选出在圆内的点,数据如下: ## 生成基础数据 set.seed(2021) N <- 5000 df01 <- tibble( x = runif(N, -0.5, 0.5), y = runif(N, -0.5, 0.5) ) %>% mutate( z = if_else( x^2 + y ^2 < 0.25, 1, 0), p = runif(N,0,2 * pi), x2 = cos(p) * 0.5, y2 = sin(p) * 0.5 ) knitr::kable(head(df01), caption = "随机数据", col.names = c("散点X", "散点Y", "是否在圆内", "随机生成0-180度", "圆X", "圆Y"), digits = 3, align = "c" ) 表1....

January 7, 2022 · 1 min · luofei

Hello world 2022

2022年元旦 The first morning of year 2022 第一缕阳光透过薄纱铺洒床头。 The sun shines sprinkled upper on my bed through the tulle. 微冷的空气中弥漫来阵阵花香。 The scent of flowers permeated in the cold air. 我张开怀抱, I opened my arms, 迎接新年的来到。 Hugged the new year. 你好! Hello ! 世界! world! 2022!

January 1, 2022 · 1 min · luofei