美文网首页R语言
入R随俗-apply和for

入R随俗-apply和for

作者: Juan_NF | 来源:发表于2019-05-10 09:20 被阅读68次
  • 知道各行各业都有鄙视链,没想到函数之间都有,真是相煎何太急。。。
  • 我都要渴死了,你跟我讲农夫山泉和依云的区别,等我先活过去再说吧。。。
  • 这两天我活过来了,静下心来了解下apply;
  • 其实归根结底还是function用得好,才能得到想要的结果,否则,我们也就只能用R里已有的函数进行行列循环而已;
下面,我们用apply和for同时实现相同的需求:
test数据框:
  • 先构建一个数据框,含数值和字符:
apply(X, MARGIN, FUN, ...)
> rm(list=ls())
> test<-data.frame(a=seq(1,10,2),b=seq(2,11,2),c=seq(11,20,2),d=c('mon','tue','wed','thu','fri'))
> test
  a  b  c   d
1 1  2 11 mon
2 3  4 13 tue
3 5  6 15 wed
4 7  8 17 thu
5 9 10 19 fri
用function和apply实现:

之前有讲过function的结构和简单使用:https://www.jianshu.com/p/ea29d93836df
之前有讲过paste0:https://www.jianshu.com/p/2ee3a2625be3

  • 对第一和第三个元素求均值
  • 将第2和第4个元素连接在一起
  • 以行为单位进行运算
> y<-function(x){
+   mean_row<-mean(as.numeric(c(x[1],x[3])))
+   str_paste<-paste0(x[2],x[4])
+   result<-c(mean=mean_row,str=str_paste)
+   return(result)
+   }
> tmp<-apply(test,1,y)
> tmp
     [,1]    [,2]    [,3]    [,4]    [,5]   
mean "6"     "8"     "10"    "12"    "14"   
str  " 2mon" " 4tue" " 6wed" " 8thu" "10fri"
> class(test)
[1] "data.frame"
> class(tmp)
[1] "matrix"
用for循环实现:
  • 先构建合适dim的数据框或其他数据对象(这里构建了5行两列)
  • 构建for循环,循环的范围(从第一行到最后一行)和循环的内容(mean和paste0)
  • 不同的结果放在不同的列,最终得到承载结果的数据对象(test_r)
> test_r<-c(rep(1,10))
> dim(test_r)<-c(5,2)
> for(i in 1:nrow(test)){
+   test_r[i,1]<-mean(c(test[i,1],test[i,3]))
+   test_r[i,2]<-paste0(test[i,2],test[i,4])
+ }
> test_r
     [,1] [,2]   
[1,] "6"  "2mon" 
[2,] "8"  "4tue" 
[3,] "10" "6wed" 
[4,] "12" "8thu" 
[5,] "14" "10fri"

课程分享
生信技能树全球公益巡讲
https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g
B站公益74小时生信工程师教学视频合辑
https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw
招学徒:
https://mp.weixin.qq.com/s/KgbilzXnFjbKKunuw7NVfw

相关文章

  • 入R随俗-apply和for

    知道各行各业都有鄙视链,没想到函数之间都有,真是相煎何太急。。。我都要渴死了,你跟我讲农夫山泉和依云的区别,等我先...

  • 入家随俗

    有句话叫做入乡随俗,这是个浅显易懂的道理,我们只需照字面意思理解便可,意为去到哪里,便随哪里的风土人情过活,这样利...

  • R代码:apply和get

    有x1到x100这100个相同长度的向量,怎么把他们弄成数据框data.frame(x1,x2,...,x100)...

  • R 中for 循环替代函数:apply、Map及purrr::m

    R 中apply函数、Map函数及purrr包的map函数 apply()函数算是R语言里面很基础的一个函数,同时...

  • R语言里面的apply()家族简述

    这个教程目的在于介绍apply()家族在R语言的用法,apply()函数算是R语言里面很基础的一个函数,同时还有s...

  • java8函数编程--Function

    Function Function是java8的一个函数式编程接口 apply方法接收一个入参T,返回R,在使用上...

  • 入乡才随俗

    万圣节刷屏。重阳退让。作为好玩的人,我很喜欢万圣节。可是中国的万圣节似乎老是差那么点意思。扮鬼都绷着。还是消停过自...

  • 入乡还需随俗

    早上刷牙的时候突然想起来家乡的一些习俗,有两句话想说说。 中国幅员辽阔民族众多,每个地方都有每个地方的特色。这些地...

  • 入乡难随俗

    谚云:“入乡随俗, 出水随弯。"只是习俗最难改。移民踏入异国他乡, 就是来宾访客, 旅居犹如寄人蓠下, 既陌...

  • 入乡该随俗

    今天是冬至,一大早,手机里各种祝福不断,文字的、图片的、视频的,无不提醒着你,这是一个不一样的日子。 ...

网友评论

    本文标题:入R随俗-apply和for

    本文链接:https://www.haomeiwen.com/subject/wsdnoqtx.html