pb生成data matrix二维码_迂回生成示例数据框(R语言小技巧)

6195253639083807149423e5717d8003.png812c7ba76f39fae39d6a9c6fed0197cf.png 今天是生信星球陪你的第416天6195253639083807149423e5717d8003.png


   大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

   就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

   这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!

问题

我在讲R语言基础课程时,放了一道练习题,让学员生成如下数据框:

75314a8f0dcde4451e6eccb986a07b79.png

我给出的答案是:
df <- data.frame(gene=paste0("gene",1:15),s1=rnorm(15),s2=rnorm(15),s3=rnorm(15))

tips:rnom是一个生成随机数的函数,括号里的15代表生成随机数的数量是15个。

遇到了一位学员提了个问题:后三列的列名有规律,内容也都是随机数,如果有需求生成10列、100列,有没有其他方法快捷生成?

方法一:利用矩阵

我想到的第一种方法时用矩阵生成,然后转换为数据框。
因为矩阵就是在向量的基础上增加了行和列的属性,如下:

df2=matrix(rnorm(45),ncol = 3)
df2=data.frame(df2)
df2=cbind(gene=paste0("gene",1:15),df2)
df2

思路非常简单:先生成45个随机数,然后将他们排列为三列,同样的道理,要生存10列那就是10×15个随机数,排列为10列。

方法二:利用for循环和列表

这个思路就相对难一点:
1.先赋值一个空数据,只定义他的数据结构是列表。
2.然后用for循环进行批量赋值,将这些值储存在列表里,成为列表的元素。元素名是s1,s2。。。s10。
3.用as.data.frame将列表转换为数据框。

test=list()
#定义行数。n等于几,就会生成几列。
n=10
for(i in 1:n){
  test[[i]] }
df3 = as.data.frame(test)
colnames(df3) "s",1:n)
df3=cbind(gene=paste0("gene",1:15),df3)
df3

将这些代码复制到Rstudio即可直接运行。

补充:现在查看左边的变量窗口

d0318581e0fb02d7419b80e4281781b1.png

i的值是10L,代表的是整数10,这里的L是为了强调,区分数值型数据的两个分支,即整型和双精度型,之所以是是10,是因为for循环多次运行了大括号内的代码,最后一轮i的值是10。

向大家隆重推荐隔壁生信技能树的一系列干货!

全球公益巡讲、招学徒

B站公益74小时生信工程师教学视频合辑


?

初学生信,很荣幸带你迈出第一步。

我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到jieandze1314@gmail.com,每一条都会看到的哦~

a2d0ecf2946b839c8675ebf6cfc04af8.png

pb生成二维码源代码 二维码是QR 二维码 QR码是二维条码的一种,QR 来自英文 “Quick Response” 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码。QR码比普通条码可储存更多资料,亦无需像普通条码般在扫描时需直线对准扫描器。 QR 码呈正方形,只有黑白两色。在4个角落的其中3个,印有较小,像“回”字的的正方图案。这 3 个是帮助解码软件定位的图案,使用者不需要对准,无论以任何角度扫描,资料仍可正确被读取。 QR码最常见于日本,并为目前日本最流行的二维空间条码。QR码比普通条码可储存更多资料。 QR码呈正方形,只有黑白两色。在4个角落的其中3个,印有较小,像“回”字的的正方图案。这3个是帮助解码软件定位的图案,使用者不需要对准,无论以任何角度扫描,资料仍可正确被读取。 日本QR码的标准JIS X 0510在1999年1月发布,而其对应的ISO国际标准ISO/IEC18004,则在2000年6月获得批准。根据Denso Wave公司的网站资料,QR码是属于开放式的标准,QR码的规格公开,而由Denso Wave公司持有的专利权益,则不会被执行。 除了标准的QR码之外,也存在一种称为“微型QR码”的格式,是QR码标准的缩小版本,主要是为了无法处理较大型扫描的应用而设计。微型QR码同样有多种标准,最高可储存35个字元。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值