书接 #6。因为 #6 的任务太大了,所以新开一个事项,先完成它的一个子集:只整理分类信息,先不管标签。
目的
先说分类的最高目的:分类就是我们的子品牌。我们的文章包含哪些子品牌,或者说统计之都涵盖哪些栏目(像报纸一样)。这是整个统计之都的文章品牌建设问题。其次,因为所有的分类名都是可点击的链接,所以读者可以很方便只阅读她关心的栏目。这是为读者提供一个方便的导航。
分类建议
目前的所有分类在:https://cosx.org/categories/ 可以看到它们是一团浆糊:
R (2) Web API (1) cos 访谈 (9) ggimage (1) ggplot2 (1) leaflet (1) ** R 会议 (2) ** R 语言会议 (7) 优化与模拟 (16) 出国留学 (3) 分析与代数 (1) 可视化 (9) 回归分析 (12) 图书出版 (5) 图片 (1) 地图 (1) 地理信息可视化 (1) 多元统计 (3) 抽样调查 (3) 推荐文章 (97) 数学方法 (7) 数据分析 (32) 数据挖掘与机器学习 (47) 新闻通知 (77) 时间序列 (3) 概率论 (9) 模型专题 (7) 每周精选 (23) 沙龙纪要 (4) 生物与医学统计 (17) 经典理论 (27) 统计之都 (196) 统计刊物 (10) 统计图形 (40) 统计推断 (27) 统计计算 (16) 统计软件 (89) 网站导读 (40) 职业事业 (55) 计量经济学 (4) 试验设计 (7) 贝叶斯方法 (6) 软件应用 (60) 金融统计 (4) 随机过程 (5) 非参数统计 (3) 风险精算 (7) 高校课堂 (9)
结合 #6 中 @Huimincheng2015 的建议,我给出我的建议分类供讨论:
-
统计之都:这个分类是当前被滥用最多的(原因大概是过去作者们不理解这个分类的意思),它应该只被用在跟统计之都这个集体、组织密切相关的文章上,比如统计之都网站的改版、统计之都主办的活动等。我的结论是绝大多数文章的这个标签都应该被去掉。这个分类应该重命名为“新闻动态”,避免将来误导更多作者。可以归并原来的分类:新闻通知、网站导读、每周精选、沙龙纪要。
-
COS访谈:因为有特色
-
R语言:它可以作为所有跟 R 语言相关的文章的分类,在一篇文章分类中的排位取决于这篇文章跟“语言”的相关程度,比如 R 会议跟 R 有关,但 R 会议的文章应该优先使用 R 会议的分类;统计计算的文章如果用了 R,但主要强调计算方法,也不应该用 R 语言作为第一分类;类似 R 包开发、R 的程序特征类的文章用 R 语言的分类才比较合适。
-
R会议:跟新闻动态分类有重叠,但 R 会议是我们重要的牌子,我觉得值得单独列一类。
-
统计计算:可能可以归并原“统计软件”、“软件应用”分类。
-
统计图形(诸如可视化、地图等分类都可以归并到这个分类)
-
统计模型:可归并统计理论
-
统计应用:可归并数据分析
-
机器学习:因为它热
-
职业事业:可以归并出国留学
-
推荐文章:我们根本没有一个推荐机制,所以这个分类过去其实一直是在胡来,但我觉得这个栏目也有存在的必要。因为现在再回去一篇篇读了投票是否推荐太不现实,所以只能靠整理分类的小编凭良心推荐了。
如前面所说,一篇文章可以有多个分类,但我建议每篇文章不要超过三个。分类需要高度概括,但也不能太抽象,比如“统计学”对统计之都网站来说就不是一个合理的分类,因为读者看到这个分类之后对文章的内容毫无概念(统计之都就是关于统计学的啊)。分类的作用是给读者一个大概概念,比如关心 R 会议的读者一般不会误入职业事业栏目(不能说二者绝对没有交集,但交集肯定是非常小)。
原来存在但这里没有提到的分类就请小编自己机动处理了。我的大体意见是,如果一个分类下面只有寥寥几篇文章,那这个分类可能没有存在的必要。但又有两个可能性让它有存在的必要:一是有些文章忘了使用这些分类名;二是这个分类是我们想建设的品牌,但现在的文章还太少,将来会更着重去约稿。
上面的分类并不是死的,随着时间推移可以再更新,等我们先把一团浆糊理清澈一点了再讨论新分类吧。
技术细节
blogdown 包中有个 find_categories()
函数也许可以帮帮忙,比如查找包含特定分类的文章:
devtools::install_github('rstudio/blogdown')
blogdown::find_categories('R') # 查找含有 R 分类的文章
blogdown::find_categories(NULL) # 查找分类完全缺失的文章
# 找到 R 分类下的所有文章并在 RStudio 里自动打开那些 .md 源文件
blogdown::find_categories('R', open = TRUE)
但并没有直接的替换分类的函数,需要小编自己动手丰衣足食。以下是一个示例,原谅我已经没有脑子更详细解释了:
files = list.files('content/post', '[.]md$', full.names = TRUE)
for (f in files) {
blogdown:::modify_yaml(f, categories = function(old, ...) {
# old 是当前文章的分类向量,有可能是 NULL
# 下面对 old 做一些操作,并返回新的分类值
old[old %in% c('R', 'ggimage', 'leaflet')] = 'R语言'
unique(old)
})
}
修改分类时要在 git 里面看看差异,每修改一次看一次,觉得没问题就提交一次,然后再修改再看,这样反复迭代。不然等全改完了再来看差异可能会昏掉。先用自动化方式处理,完了之后再用人眼来一篇篇过。