在 R 中遍历变量生成数据框的最佳实践

在做数据分析的时候循环遍历某一变量,并且生成一个数据框(data.frame)作为报告是一个非常常见的事情,但是究竟怎么写才能让程序跑得比西方记者还快却非常麻烦。众所周知 R 是一个很慢而且语法怪异的语言,用「常规」的思路来写一段 R 脚本,性能可能会非常不理想,而写「性能很好」的脚本,又可能把你的代码变成自带精神污染效果的魔法道具。因此在本文当中我将分享一个用于循环遍历变量生成数据框的编程模板,以期在性能和可读性之间取得平衡。

大方向很简单,把 for loop 禁用掉,尽量使用向量化循环(lapply),同时不使用 sapply;不使用 「Scoping Assignment Operator」(<<-)。

遗体捐献登记指南

2019年7月16日,我在中国人体器官捐献中心等登记了人体器官捐献。实际上想做遗体捐赠登记已经很长时间了。本来以为会非常麻烦。但是那天刷煎蛋无聊图的时候看见有人完成了网上登记,发现还挺简单的,就跟着登了一下。

你需要做的事情很少,进入这个网站,输入你的姓名、联系电话、身份证号、邮箱、登记地点、以及捐赠意愿(器官、眼角膜、组织、遗体)就可以了,如果你想要让地球污染变得更严重一些还可以索要一张塑料卡片。当然,为了当作纪念我还是臭不要脸的要了一张卡,7月27日送到学校,当天下午才拿到(发现卡片的一个角被折坏了,不开心——)。

具体捐哪些部分可以看你自己的接受程度,我看的比较开,四项全都点了。

中文 Git Commit Message 风格指导

在团队合作项目中,不好好写 Git Commit Message 是会被工友竖中指的 (┛`д´)!每个人写代码的习惯多多少少都有一些差别,对于一个人来讲非常合理的操作,在另外一个人看来或许就会很魔幻。这个时候如果有一份清晰完整的提交记录,那么后续的代码维护着就可以更加清楚的知道前任代码编写者的意图。因此撰写清晰明确的 Commit Message 是一件能够防止工友心跳加速和办公室暴力的事情。

考虑到很多工作团队使用的是全中文的工作环境,目前也很少看到中文的 Commit Message 书写指南,所以姑且参考各种英文版本的指南,扒一份中文版的给自己用。如果你觉得这份文档写的不错,也欢迎在团队中推广这份指南。

简单易懂的统计学入门:自下而上(一)

你要分析数据,你是别的专业跨过来到心理学方向的;你是本科生,你上课的时候听不懂老师在台上讲些什么鬼;你是个蛇精病,放着周末不在床上多睡几个小时,没事就爱在网上看论文但是又看不懂这些论文里面的统计方法。于是乎你开始在网上搜各式各样的统计科普,恰巧人希咕狗把我的文章权重提上的挺高(或许不会发生),于是乎你就点进来了。

如果这就是发生在你身上的故事的话,那么我们很有缘分,希望这篇文章不会让你感到失望。

PS:因为接了周末远程实习,所以没能达成一周双更……今天写文章的时间也是昨天爆肝写了一天小程序一整天,把今天的工作量一口气做完了才挤出来的时间 QwQ~

博客模板更新史 · 蛤克西欧卷 · 第一章

开篇减一秒,呱。

也不知这两年怎么了,开始越来越看重自己的博客。前端魔法群有一个人(是谁忘了非常抱歉! _(┐「﹃゚。)_)讲了一句话,我非常喜欢,大意是「有一个博客,就像在互联网上有了一块属于自己的领土」。而我渐渐的开始把这个博客当成自己的家,经常写点东西,邀请朋友过来玩,四处跟人交换链接。我是那种把在网上的生活看的比线下生活重的人,有可能是因为自己准 Digital Native 的身份,也有可能是这两年过的真的不顺,也没什么归属感。总之我开始更加频繁的打扮这个小站,水更多的文章、花时间调模板的很多小细节、也花很大的价钱换掉了用了十多年的域名。在做这些事情的时候让我觉得很满足,不知道这种满足的感觉能持续到什么时候。

这次模板大修折腾了好几个休息日,虽然整体的视觉效果没有发生很大的变化,但是难以察觉的地方做了很多微调。于是决定写一个日志记录一下这段时间更新的内容,当作一个里程碑,顺便炫耀一下自己残次的设计功力 。:.゚ヽ(*´∀`)ノ゚.:。

警告:口水文,流水账,给自己看的。

来聊聊催眠吧

催眠,听起来是个挺神棍的东西(实际上的确是挺神棍的 ( ×ω× )),但是它的确是一种能够解决问题的技术;从文化层面上讲,催眠也是一个非常重要的文化符号,最早可以追溯到数千年以前,从最早的历史记录来看,无论是萨满仪式还是牧师的仪式都包含了很多与催眠类似的要素。

无论是你日常能接触到的文学作品、影视作品还是一般民众比较不太会接触到的科研界,都对催眠这个话题有着很多的探讨。特别是科研领域,有相当多的科研工作者倾注了大量的精力去研究人们在经历催眠时身体上究竟发生了什么变化、人们为什么会被催眠、催眠这件事情发声的原理究竟是什么等等诸多问题,但是时至今日我们对于催眠究竟是怎么发生的依旧知之甚少,有的仅仅是各式各样的假设以及为了给这些假设提供些许依据的论文而已。

虽然科研界的现状看起来有些尴尬,不过人们对于催眠这件事情的理解一定是要比数千年以前深刻许多,因为某些巧合我刚好深入的研究了一段时间催眠的机制原理,今天就写篇文章与各位聊聊。

注意:这篇文章是我把一些晦涩难懂的论文重新整理成易于下口的科普文章,原创性的成分并不高,对论文感兴趣的话可以查阅参考文献小节。

依恋与爱情

好久没正儿八经的写东西了,练练笔 ᐕ)⁾⁾

今天向各位介绍一个比较有趣的观点:怎么样从依恋的角度看待人际关系。或者说,在生命早期父母与你的交往模式如何影响了日后你与社会的交往模式。本篇文章会着重落在情侣之间的交往方式上,但是早期依恋经验对日后的影响并不仅仅局限在情侣之间的交往上,而是会影响到日后社会生活的方方面面。

我认为这一话题非常重要:当你遇到了一个奇怪的人(特别是社交模式很奇怪的人),人们往往会首先做出排斥的反应,如果这种排斥反应不断的在社会上积累,就有可能造成霸凌。这种霸凌既有可能出现在你就读过的学校中,也有可能出现在你上班公司里、你居住的小区里、你常去的那家超市里和你爱吃的那家馆子里。在这种社会霸凌当中每个个体通常都是由情感左右的、盲目的,这些盲目造就了一个排他的社会群体。虽然我不是那种左到要包容全世界的人,但是我主张每个人在产生排斥的情感与行为前要多一些思考,而不是盲目的被立刻出现的情绪所左右。在我看来,这是构建一个更有包容力的社会所必要的基本公民素养,同时也是推动当代社会文明发展的重要组成部分。

注意:这篇文章是我把一些晦涩难懂的论文重新整理成易于下口的科普文章,原创性的成分并不高,对论文感兴趣的话可以查阅参考文献小节。

Linux 下将 Spotify 的音乐导入一般音乐播放器

Spotify 真的是一个非常好用的音乐串流平台,无论是社区质量还是推荐算法都甩了某云音乐几条街,但是比较麻烦的一点是它传输的音频文件经过了一组非常硬核的加密算法处理,对于一般用户来讲这并没什么问题,但是对于我这种宿舍上网有流量计费的患者却非常麻烦,1G 两块钱的流量费用拿来听高音质流媒体真的是有点吃不住,所以我会选择在实验室那边先把音乐处理一下然后装到 MP3 播放器里拿回宿舍听,这样就可以免除钱包被掏空的苦恼。

网上流传了很多花钱的转码工具,但是本着能不花钱就不花钱的原则我还是在 GitHub 上找到了在 Linux 下不花钱就可以解决问题的方法,接下来就向各位介绍一下具体的操作细节。

注意:本文是一篇加密文章,仅面向我的朋友们开放,如果你误打误撞点进来的话我只能说抱歉了。 _(:3 」∠ )_

开源评论框 isso 后台无法通过 HTTPS 访问的解决方法

国内的社会化评论框基本上已经都死干净了,国外的比如像 Facebook Comments 或者 Disqus 也是各有各的问题,比如国内根本连不上、Tracker 一大堆影响访客隐私。 这时候自己托管的开源评论框工具就派上用场了,你可以把评论服务托管到自己的服务器上,没有 Tracker,也没有加载速度的问题。我选择了 isso 管理访客评论,因为其架构简单,资源消耗相对较少且无需配置数据库。 但是选择自己搭建这类服务免不了要折腾,部署过程都很简单,但是配置 https 的时候出了很大的问题,整个 isso 对 HTTPS 的支持都有问题,这个问题在管理后台上尤为明显:你没办法通过 https 协议登录后台,会出现 405 报错。花了点时间研究了一些如何解决这一问题,本文记录了我所提供的两种解决方案。

在 Web 端实现 Reveal Highlight 效果

Fluent Design System 是由微软设计团队发布的一套用于其自家平台的设计语言。在用户体验这一设计语言时,能够最为直观感受到的设计元素之一就是 Reveal Highlight:当你的鼠标划过一个按钮时,会有一个光效跟随着你的鼠标划过;当你按下鼠标时,会有一串涟漪散开。

这个效果和 Material DesignRipple 效果非常像,但是实现起来却比 Ripple 困难得多:二者主要的差异是 Ripple 只会在鼠标按下并弹起时才会被触发显示,而 Reveal Highlight 效果则需要有一个光效元素时时刻刻跟随鼠标移动,让光效在鼠标移动时跟手就是我们要解决的最大问题。