楼主: sosmall1181
8728 42

[问答] R语言矩阵计算 [推广有奖]

11
sosmall1181 发表于 2013-11-28 10:13:14
nuomin 发表于 2013-11-28 08:45
简洁、味儿浓,哈哈
越来越看不懂了。。。

12
sosmall1181 发表于 2013-11-28 10:33:31
nuomin 发表于 2013-11-27 21:01
有R味道的代码要没有循环,以向量运算为主。我也来贴一段代码,比以上的简洁一些,简单一些。
与matlab一样,R也是以向量为主。。。我之前用过FORTRAN,也是主要以写循环为主,我都有点思维定势了

13
nuomin 发表于 2013-11-28 21:20:31
sosmall1181 发表于 2013-11-28 10:33
与matlab一样,R也是以向量为主。。。我之前用过FORTRAN,也是主要以写循环为主,我都有点思维定势了
在我看来能用像fortran、lisp这样的古老语言的都是牛人

14
sosmall1181 发表于 2013-11-29 09:30:38
nuomin 发表于 2013-11-28 21:20
在我看来能用像fortran、lisp这样的古老语言的都是牛人
  我都用简单的加加减减,复杂的也是不会,都不精啊。

15
hayes 发表于 2013-11-29 10:46:17
jmpamao 发表于 2013-11-27 22:50
原来有 combn函数

那就更味儿一点的
高人啊~~~~~膜拜

16
sosmall1181 发表于 2013-11-29 14:03:35
jmpamao 发表于 2013-11-27 22:50
原来有 combn函数

那就更味儿一点的
如果一个人对应两个学校,用intersect也不可以,该用什么函数判断是否有交集呢?

17
jmpamao 发表于 2013-11-29 14:57:34
sosmall1181 发表于 2013-11-29 14:03
如果一个人对应两个学校,用intersect也不可以,该用什么函数判断是否有交集呢?
  1. x <- matrix(c("A","B","C","D","E","人大,北大,剑桥","交大","人大,清华","清华","蓝翔"),ncol=2);x
  2. dat<-t(combn(x[,1],2))
  3. dat2<-apply(dat,1,function(i){
  4.   any(unlist(strsplit(x[which(x==i[1]),2],split=","))%in%unlist(strsplit(x[which(x==i[2]),2],split=",")))
  5. })
  6. dat.new<-as.data.frame(cbind(dat,dat2))
  7. dimnames(dat.new)[[2]]<-c("id1","id2","yesorno")
  8. dat.new
复制代码
是这种吗?

18
sosmall1181 发表于 2013-11-29 15:12:40
jmpamao 发表于 2013-11-29 14:57
是这种吗?
膜拜。。。作为菜鸟,需要更加用功,谢谢!

19
jmpamao 发表于 2013-11-29 15:22:32
sosmall1181 发表于 2013-11-29 15:12
膜拜。。。作为菜鸟,需要更加用功,谢谢!
一起努力吧 我是跟那些高手后面跑跑龙套的
只知道些 前期的数据清洗。后面的要向在座的学习

20
sosmall1181 发表于 2013-11-29 15:56:46
jmpamao 发表于 2013-11-29 15:22
一起努力吧 我是跟那些高手后面跑跑龙套的
只知道些 前期的数据清洗。后面的要向在座的学习
一起努力。但是如果矩阵比较大的话,用combn函数可能效率就比较低

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 17:51