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, 根
据你的需要). |
|