全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
845 7
2020-01-30
> x<-c(1:5)
> x
[1] 1 2 3 4 5
> order<-c(0,1,0,1,1)
> order
[1] 0 1 0 1 1
> x<-x[order]
> x
[1] 1 1 1


这里为什么最后输出的x 不是2,4,5?
多谢!


我其实是想理解 x <- x[!is.na(x)] 这个语句
我是觉得x <- x[!is.na(x)]这个语句的意义,是提取一个没有NA值的新的数据组
!is.na(x) 返回的是一个0,1组成的数组吧?
如果这样,那根据我最上面的代码体现的
最后x 没有保留原来的数值,也是只有1 吗?



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-1-30 21:34:30
为什么会以为输出的会是2,4,5呢?
应该是你误以为如果一个向量中只有0和1的话,R语言会把它当做FALSE和TRUE来看待吧?很遗憾,R语言不会。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-1-30 22:45:49
cheetahfly 发表于 2020-1-30 21:34
为什么会以为输出的会是2,4,5呢?
应该是你误以为如果一个向量中只有0和1的话,R语言会把它当做FALSE和T ...
> x<-c(1:5)
> order<-c("TRUE","FALSE","TRUE","FALSE","FALSE")
> order
[1] "TRUE"  "FALSE" "TRUE"  "FALSE" "FALSE"
> x[order]
[1] NA NA NA NA NA
>

改成true 和 false也不对啊。。。多谢你!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-1-30 22:54:55
cheetahfly 发表于 2020-1-30 21:34
为什么会以为输出的会是2,4,5呢?
应该是你误以为如果一个向量中只有0和1的话,R语言会把它当做FALSE和T ...
> x<-c(1:5)
> order<-c("TRUE","FALSE","TRUE","FALSE","FALSE")
> order
[1] "TRUE"  "FALSE" "TRUE"  "FALSE" "FALSE"
> x[order]
[1] NA NA NA NA NA
> order<-c("TRUE","FALSE","TRUE","FALSE",FALSE)
> order
[1] "TRUE"  "FALSE" "TRUE"  "FALSE" "FALSE"
> order<-c(TRUE,FALSE,TRUE,FALSE,FALSE)
> order
[1]  TRUE FALSE  TRUE FALSE FALSE
> x[order]
[1] 1 3
> x
[1] 1 2 3 4 5
>


又试了一下,请问方便多说一下在R 语言中true false 是否带双引号的影响;以及true false和 1,0的关系吗?多谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-1-31 12:41:41
1. R的所有索引都是从1开始的,所以x[1]表示向量x的第一个元素,x[0]是没有意义的,这也是为什么x[order]结果是1 1 1,因为这实际上等同于3次选取了x[1]
2.
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-1-31 14:39:10
不要双引号,有了双引号R语言把它当做字符来处理,直接用TRUE和FALSE
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群