楼主: 江夏雁
919 7

[问答] R语言学习中,一个小问题 [推广有奖]

  • 20关注
  • 2粉丝

朋友

教授

57%

还不是VIP/贵宾

-

威望
0
论坛币
565 个
通用积分
5.4453
学术水平
8 点
热心指数
9 点
信用等级
-4 点
经验
40942 点
帖子
843
精华
0
在线时间
613 小时
注册时间
2010-6-24
最后登录
2025-2-26

楼主
江夏雁 在职认证  发表于 2020-1-30 21:27:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
> 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 吗?



二维码

扫码加我 拉你入群

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

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

关键词:R语言学习 R语言 小问题 语言学 Order

若无人伴你 愿你成你自己的太阳

沙发
cheetahfly 在职认证  发表于 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的关系吗?多谢!

报纸
sanjie27 发表于 2020-1-31 12:41:41
1. R的所有索引都是从1开始的,所以x[1]表示向量x的第一个元素,x[0]是没有意义的,这也是为什么x[order]结果是1 1 1,因为这实际上等同于3次选取了x[1]
2.
  1. > class("TRUE")
  2. [1] "character"
  3. > class(TRUE)
  4. [1] "logical"
复制代码
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

地板
cheetahfly 在职认证  发表于 2020-1-31 14:39:10
不要双引号,有了双引号R语言把它当做字符来处理,直接用TRUE和FALSE

7
江夏雁 在职认证  发表于 2020-1-31 18:49:37
sanjie27 发表于 2020-1-31 12:41
1. R的所有索引都是从1开始的,所以x[1]表示向量x的第一个元素,x[0]是没有意义的,这也是为什么x[order]结 ...
多谢!

8
江夏雁 在职认证  发表于 2020-1-31 18:50:24
cheetahfly 发表于 2020-1-31 14:39
不要双引号,有了双引号R语言把它当做字符来处理,直接用TRUE和FALSE
多谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 20:10