由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 两个简单R代码(坑?)求解[factor]
相关主题
[合集] 和大家再讨论一道面试算法题(MS) (转载)python转化成exe的能力怎样?
True or Falsea question on python
一个django问题:debug=true就很好;debug=false,css就找不到原来Python有蟒蛇的意思
如何clean up C语言中的#if condition statement?python有什么类似Rstudio或者matlab的IDE吗?
这个题目什么意思啊?Anaconda装起来会跟已有的python dist有什么冲突吗?
这样的代码有啥意义么学python要学到什么程度才算professional?
how to reverse a HUGE list?为什么在windows 的 c++ ide codeblocks 上装个c++ package 这么麻烦?
有人用过octave吗?windows 上安装python package.
相关话题的讨论汇总
话题: na话题: false话题: true话题: factor话题: levels
进入Programming版参与讨论
1 (共1页)
m******r
发帖数: 1033
1
第一个问题是看了统计版一人问的。 我把该问题简化如下:
[1] FALSE TRUE
> v <- seq(1.5, 1.7, 0.1)
> c(1.5, 1.6, 1.7) == v;
[1] TRUE TRUE TRUE
>
> v <- seq(1.4, 1.6, 0.1)
> c(1.4, 1.5, 1.6) == v;
[1] TRUE TRUE FALSE
谁碰到过这个坑, 请来说说。 第二坑,也很奇怪。 难道不应该是FALSE TRUE TRUE??
第二个问题是从factor文档(?factor)看来的(稍作改动,简化问题)
> (x <- factor(c(1, 2, NA) , exclude = NULL))
[1] 1 2
Levels: 1 2
> is.na(x)[2] <- T
> x
[1] 1
Levels: 1 2
> is.na(x)
[1] FALSE TRUE FALSE
p****o
发帖数: 1340
2
这都不是啥坑。比如第一个就是浮点数比较,直接相等都有问题的。R文档都说让你用
all.equal了。
d******c
发帖数: 2407
3
第二个运行结果不对把
is.na(x)[2] <- T 是什么乱七八糟的?这跟x根本没关系,根本没改变x好吧,我运行
结果x也没有变。
而且用T当TRUE是非常坏的用法。
TRUE and FALSE are reserved words denoting logical constants in the R
language, whereas T and F are global variables whose initial values set to
these.
> (x <- factor(c(1, 2, NA) , exclude = NULL))
[1] 1 2
Levels: 1 2
> x
[1] 1 2
Levels: 1 2
> is.na(x)[2]
[1] FALSE
> is.na(x)
[1] FALSE FALSE FALSE
> is.na(x)[2] <- T
> x
[1] 1
Levels: 1 2
m******r
发帖数: 1033
4
那你帮忙看看一下两段?(都是从?factor 来的, 我稍作改动)
x <- factor(c(1, 2, NA) , exclude = NULL)
is.na(x)
结果FALSE FALSE FALSE
x <- factor(c(1, 2, NA) , exclude = NA)
is.na(x)
结果FALSE FALSE TRUE
我知道NA 和 NULL的区别。
NA 是missing value indicator, length =1
NULL 是NULL object
我都搞不清楚exclude = NULL是啥意思。
exclude = NULL 可以是说, 所有level允许。
exclude = NULL 也可以说, 要把NULL object 排出, 因为它在exclusion list上面。
(对这个题目, NA应该允许存在)
无论怎样解释, 第一段代码为啥得出FALSE FALSE FALSE的结果??

【在 d******c 的大作中提到】
: 第二个运行结果不对把
: is.na(x)[2] <- T 是什么乱七八糟的?这跟x根本没关系,根本没改变x好吧,我运行
: 结果x也没有变。
: 而且用T当TRUE是非常坏的用法。
: TRUE and FALSE are reserved words denoting logical constants in the R
: language, whereas T and F are global variables whose initial values set to
: these.
: > (x <- factor(c(1, 2, NA) , exclude = NULL))
: [1] 1 2
: Levels: 1 2

d******c
发帖数: 2407
5
这些都是基本概念,每个函数的帮助里基本都写清楚了,下面带引号的
都是factor帮助里的原文
这东西最初设计的初衷是因为统计里有很多category
variable,但是早起R的string效率低,所以把一个确定集合的string改成一个string
表(也就是levels)和index。factor的实际值全是index,都是整数。
"factor returns an object of class "factor" which has a set of integer codes
the length of x"
你说“我都搞不清楚exclude = NULL是啥意思。”,人家帮助里明确说了
The codes of a factor may contain NA. For a numeric x, set exclude = NULL to
make NA an extra level (prints as )
> x
[1] 1 2
Levels: 1 2
levels有NA,那么x[3]的实际值就是index
> as.numeric(x[3])
[1] 3
> x <- factor(c(1, 2, NA) , exclude = NA)
> x
[1] 1 2
Levels: 1 2
"First all the values in exclude are removed from levels."
这里NA不在levels里,第三项本身就是NA
> as.numeric(x[3])
[1] NA

【在 m******r 的大作中提到】
: 那你帮忙看看一下两段?(都是从?factor 来的, 我稍作改动)
: x <- factor(c(1, 2, NA) , exclude = NULL)
: is.na(x)
: 结果FALSE FALSE FALSE
: x <- factor(c(1, 2, NA) , exclude = NA)
: is.na(x)
: 结果FALSE FALSE TRUE
: 我知道NA 和 NULL的区别。
: NA 是missing value indicator, length =1
: NULL 是NULL object

m******r
发帖数: 1033
6
又读了一遍, 还真是这样哦。
我很怀疑R的所有文档都是一个欧洲人(也许是个团队)统一编辑的。
写作的风格和美国人明显不一样。

string
codes
to

【在 d******c 的大作中提到】
: 这些都是基本概念,每个函数的帮助里基本都写清楚了,下面带引号的
: 都是factor帮助里的原文
: 这东西最初设计的初衷是因为统计里有很多category
: variable,但是早起R的string效率低,所以把一个确定集合的string改成一个string
: 表(也就是levels)和index。factor的实际值全是index,都是整数。
: "factor returns an object of class "factor" which has a set of integer codes
: the length of x"
: 你说“我都搞不清楚exclude = NULL是啥意思。”,人家帮助里明确说了
: The codes of a factor may contain NA. For a numeric x, set exclude = NULL to
: make NA an extra level (prints as )

w***g
发帖数: 5958
7
前两天读一个文档.根本读不懂. 后来rpy2了事.

【在 m******r 的大作中提到】
: 又读了一遍, 还真是这样哦。
: 我很怀疑R的所有文档都是一个欧洲人(也许是个团队)统一编辑的。
: 写作的风格和美国人明显不一样。
:
: string
: codes
: to

n******g
发帖数: 2201
8
小心rpy2 把default r ,路径霸占。。我被害过
[在 wdong (万事休) 的大作中提到:]
:前两天读一个文档.根本读不懂. 后来rpy2了事.
w***g
发帖数: 5958
9
请展开说说?

【在 n******g 的大作中提到】
: 小心rpy2 把default r ,路径霸占。。我被害过
: [在 wdong (万事休) 的大作中提到:]
: :前两天读一个文档.根本读不懂. 后来rpy2了事.

n******g
发帖数: 2201
10
我装了anaconda anaconda/bin凌驾于最高路径 然后rpy2把R executable 放在此处 我
原来的r install 和r packages 就出了问题
[在 wdong (万事休) 的大作中提到:]
:请展开说说?
n****t
发帖数: 53
11
尽量别用rpy2,偶尔救急用一点还行,稍微大点的程序一堆麻烦(参数名转换,复杂类
型等等)。这些乱七八糟的一个语言到另外一个语言的接口是我开发SoS的直接原因:
https://vatlab.github.io/sos-docs/

【在 n******g 的大作中提到】
: 小心rpy2 把default r ,路径霸占。。我被害过
: [在 wdong (万事休) 的大作中提到:]
: :前两天读一个文档.根本读不懂. 后来rpy2了事.

w***g
发帖数: 5958
12
最近帮人搞一个比赛, 需要用一个啥iAUC的评价. 这东西只有R有.
反正一共就三五行. 这东西生产上我是绝对不会用的.

【在 n****t 的大作中提到】
: 尽量别用rpy2,偶尔救急用一点还行,稍微大点的程序一堆麻烦(参数名转换,复杂类
: 型等等)。这些乱七八糟的一个语言到另外一个语言的接口是我开发SoS的直接原因:
: https://vatlab.github.io/sos-docs/

m******r
发帖数: 1033
13
如果我写factor的文档, 我会写清一下几件事。
1. 把如何对每个level coding写得详细些。 最好用个例子。 比如大中小对应1,2,3
2. 原始数据含有NA, R如何编码。 两种情况讨论下。 更重要的是说明, NA算成一个
level,和NA不算一个level, 到底有什么实际应用,用起来孰优孰劣。 这个文档总是从
R的角度讲R是怎么‘想’的, 却又语焉不详。 好比讲解一辆车,销售员堆砌一大堆关
于发动机如何工作的术语,让用户既无法支持 也无法反驳。
3. 还讲了一个is.na() <- TRUE. 就是我stuck的地方。 语法上我虽然明白了,却想不
出实际工作中为什么要这么搞。
4. 看到dracodoc用了is.numeric, 我在恍然大悟。 R的文档里应该用用这个函数。
当然,也不是说R什么都没讲。 反正是密密麻麻, 东拉西扯, 仿佛信用卡的用户手册。
相比之下,我夸一跨sas的好处。 和R里面factor对应的, 大概是SAS里的proc format
. 想搞明白proc format也不是件容易事。 但SAS的文档不仅讲原理,还有实际生活中
的例子,告诉你这么用有什么好处。 比如,做报表。 使用proc format可以让你的
category variable按照你指定的任何顺序显示, 可以显示成你要的任何label; 任何
数字,年月日, 时分秒,货币都可以通过format控制。 missing value, 其他类别(
other)只需要简单处理即可。 SAS还会给你输出一张表,告诉你原始数据和你的设定值
是如何对应的。
在这张表里连'其他类别', SAS都给你想好了保留字,叫 HLO.
high value (highest value your computer can represent)
low value (lowest value your computer can reresent)
O (other)
用户在每一步可以随时决定用不用format 用哪个format(你可以写无数个format, 根
据你的需要).
1 (共1页)
进入Programming版参与讨论
相关主题
windows 上安装python package.这个题目什么意思啊?
python performance in linux vs in win这样的代码有啥意义么
anaconda是python的超级集合?how to reverse a HUGE list?
似乎python的anaconda没有超越R啊有人用过octave吗?
[合集] 和大家再讨论一道面试算法题(MS) (转载)python转化成exe的能力怎样?
True or Falsea question on python
一个django问题:debug=true就很好;debug=false,css就找不到原来Python有蟒蛇的意思
如何clean up C语言中的#if condition statement?python有什么类似Rstudio或者matlab的IDE吗?
相关话题的讨论汇总
话题: na话题: false话题: true话题: factor话题: levels