※ 引述《missingmini (just missing)》之铭言:
: 感谢C大和W大指教,学了不少新东西,许多观念也有茅塞顿开的感觉,真的非常感谢!
: 有些东西还是有小疑问:
: ==============================================================================
: 1. C大用来取代我第4段程式的写法如下
: ## 4
: tbl_right_ID = table(tbl_right$ID)
: tbl_right_ID[match(comm_ID$ID, names(tbl_right_ID))] %>% sum
: 想问的是为什么要先把tbl_right$ID建成一个table,然后在match里面再取其names来用?
为了去算comm_ID$ID在tbl_right_ID里面出现几次
所以只能先unique names再用match去找到对应的ID,然后总和
计算个别ID次数跟unique names的动作可以一起做就会变成table,然后再找对应ID做总和
: 有没有方法可以直接用tbl_right物件来操作?
不太懂这个的目的是什么
最简单的方法应该是
sum(tbl_right$ID %in% comm_ID$ID)
那时候没想到这个(摊手
: ==============================================================================
: 2. W大提到的循环测时程式
: system.time({
: I = 0
: while (I < 1e7) {
: 10
: I = I + 1
: }
: })
: 为什么要有"10"这一行? 有什么特殊作用? 我试过把该行comment out再执行,结果
: 比原来快了 0.3 秒左右。
一个例子,R的循环会受到东西影响
R就花了不少时间在直译10这一行上面,所以才造成这种情形
连结里面的范例是多加了很多()