R语言入门小节#0615#单括号和双括号访问list的区别

问题描述:有一个data.all为data.frame型,分成三个子集,其对应编号的向量假设为s1,s2,s3,现要求做一个循环,分别对这三个子集操作。

> class(data.all)
[1] "data.frame"
> dim(data.all)
[1] 9785    6

最初的想法是把这三个向量合并为一个list,再进行循环

> num.dis<-list(s1=s1,s2=s2,s3=s3)
> View(num.dis)

做一个简单的循环确出现了Error in xj[i] : invalid subscript type 'list'

> for(i in 1:3){
+     data.temp<-data.all[num.dis[i],]
+ }
Error in xj[i] : invalid subscript type 'list'

错误原因为无效的下标类型,由此引出了单括号和双括号访问list对象的不同。通过class()来说明

> class(s1)
[1] "numeric"
> class(num.dis[1])
[1] "list"
> class(num.dis[[1]])
[1] "numeric"
> class(num.dis$s1)
[1] "numeric"

由此,可以看出“针对列表操作,单括号返回一个列表,双括号返回一个向量”[1]。

[1]R语言核心技术手册. 第二版. 北京:电子工业出版社. p79




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值