美文网首页R语言R语言与统计分析
这真是危险的关系,明明你错了,但是她认了

这真是危险的关系,明明你错了,但是她认了

作者: 9d760c7ce737 | 来源:发表于2019-06-26 23:35 被阅读28次

初学者学习R语言,必经之路报错,但是比报错更狠的是,明明你错了,但是她也认了。让你作出可用的图,但是数据全不对。
这个地方最大的坑就是R语言中的因子。

先讲第一个坑

假设我们这里有一个因子

dd <- factor(rep(seq(126,129),3))
dd

因子不能计算,所以我现在的需求是把他转为数值,用的是as.numeric()函数
dd1 <- as.numeric(dd)
dd1

然后我们崩溃了,跟想象中的完全不一样啊。
实际上此时as.numeric()函数把factor变成了因子的水平了
那怎么办呢?

因子转数值,必须先转为字符串,再转为数值

dd2 <- as.numeric(as.character(dd))
dd2

现在一切回归正常。
你犯了错,他不报错,但是有没有觉得很后怕呢?GEO芯如果数值都变成了因子,是不是感觉以前很有可能掉到坑里去了。别急,还有。

第二个坑

假设我们有一个数据框

set.seed(0625)
data <- data.frame(num1= sample(seq(1,500),26),
                   num2= sample(seq(1,500),26),
                   num3= sample(seq(1,500),26))
rownames(data) <- LETTERS
data <- data.frame(t(data))

这是一个数据框,R语言里面最常用的数据结构,列的名称是26个字母。

现在我想选择其中的几列,就使用列名去调取,分别是:"U","P","Y","T","M"

genelist <- factor(c("U","P","Y","T","M"))

我们课上讲过,截取数据有三种方式,分别是位置,逻辑和名称,



我们手上的是名称,那么就很好办了,直接有什么用什么。

data1 <- data[,genelist]

预想的数据应该是这样的



如果简单作图应该是这样的:


但是,实际情况是这样的!


简单作图后肯定是不一样的:



问题很严重对吧,他居然选择了完全不一样的列!

为什么呢?

还不是因子惹出来的货!
我们看一下,genelist的属性



这几个字母是因子,而因子是不能用来作为名称获取数据框的列的。

但你非要硬上, R语言默许了你的行为,并尝试去理解你的意图,最终选择先帮你转为数值再来获取,结果就是你俩触犯天条被二郎神追杀。

整个过程就变成了这样:

data2 <- data[,as.numeric(genelist)]

如何获取正确的结果?

第一,解决当下的困境,先把因子转为字符串

data3 <- data[,as.character(genelist)]

第二,防患未然,从源头上解决
发生这种情况大概率是你把基因列表先写成了txt文件,然后没有添加stringsAsFactors = F这个参数就读取进来了。
记得添加这个参数,或者使用data.table::fread()来智能无参数读取文件。

也可以在每次所有操作之前,运行一下这个语句,全局限定。

options(stringsAsFactors = F)

第三,习惯成自然,出图前,不要把数据读来读去
save函数把所有的中间文件保存为.Rdata格式,使用的时候load进来就可以了。
你从来没有把做好的PPT保存为word吧?那么为什么喜欢把R语言里面的数据保存为其他格式呢?
好了,我是果子,我们明天见。

相关文章

  • 这真是危险的关系,明明你错了,但是她认了

    初学者学习R语言,必经之路报错,但是比报错更狠的是,明明你错了,但是她也认了。让你作出可用的图,但是数据全不对。这...

  • 2020-10-26

    Don't go back.错了就要记得,错了也就认了。你的目光应该是在前方。 Be yourself; ever...

  • 明明错了

    明明错了 有没有光引领着你走了好久,比如25年,你突然发现:“嘿,不对!”但你却对自己说: ——那又有什么办法...

  • 你错了

    你错了,你不该明明知道胃不好还喝那么多酒 你错了,你不该明明睡不够觉还半夜不睡胡思乱想那么多 你错了,你不该睡眠不...

  • 女人的这些行为,说明她很在乎你

    在两性关系中,当女人在乎你的时候,她或许不会明明白白地跟你说,她是多么在乎你,但是她的行为,却根本就无法隐藏。 女...

  • 《闻香识女人》:我要一个可以燃烧的生命

    出错了依然能走下去 所以出错了又有什么关系。 尽管我依然不认同中校那些疯狂而不顾危险的行为,但我对他的精神永远赞赏...

  • 从未后悔盛放,哪怕明知最终会离开

    我明明知道一切不会长久,可我就是舍不得;我明明知道你从来没有认真过,可我就是认了真;我明明知道你最终会离开,可我,...

  • 危险的关系

    危险的临界状态 提到亚健康,大家并不陌生,它是一种介于疾病与健康之间的临界状态,并非某种明确的疾病,却会让人出现身...

  • 《危险的关系》

    读完这本书,结局让人陷入沉思,最后一句话是“我在这时候才体验到我们的理智,既不足以防止我们的不幸的发生,也...

  • 《危险的关系》

    整部《危险的关系》不仅仅具有文学价值,它本身就构成了一个复杂的、完美的、充满细节的心理学案例。 在《危险的关系》中...

网友评论

    本文标题:这真是危险的关系,明明你错了,但是她认了

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