[R] 对象深入

1. 求解线性方程组


> a<-matrix(c(3,1,5,2),2,2)
> b<-matrix(c(4,1),2,1)
> x<-solve(a,b)  
> x
     [,1]
[1,]    3
[2,]   -1

2. 数据框

> city<-c('a','b','c','d')
> age<-c(27,29,31,16)
> data<-data.frame(city, age)
> class(city)
[1] "character"
> class(data$city)              #character自动转换为factor
[1] "factor"
> data2<-data.frame(city,age,stringsAsFactors = F)  #不自动转,设置为FALSE
> class(data2$city)
[1] "character"
> dim(data)
[1] 4 2
# 获取数据框 x 的行数或列数 nrow(data),  ncol(data)
> head(data)
  city age
1    a  27
2    b  29
3    c  31
4    d  16
> summary(data)
 city       age       
 a:1   Min.   :16.00  
 b:1   1st Qu.:24.25  
 c:1   Median :28.00  
 d:1   Mean   :25.75  
       3rd Qu.:29.50  
       Max.   :31.00  
> str(data)
'data.frame':   4 obs. of  2 variables:
 $ city: Factor w/ 4 levels "a","b","c","d": 1 2 3 4
 $ age : num  27 29 31 16
# dim得到维度,head得到前六行数据;
# summary函数负责对每列进行统计,而str则返回整个数据的结构。

3. 排序

> order(data$age)           #最小数的位置
[1] 4 1 2 3
> data[order(data$age),]    #默认升序排序
  city age
4    d  16
1    a  27
2    b  29
3    c  31
> data[order(data$age,decreasing = T),]   #降序排序
  city age
3    c  31
2    b  29
1    a  27
4    d  16

4. 缺失值与空值

> temp<-c(25,36,14,12,NA)  #NA一定要大写
> temp
[1] 25 36 14 12 NA
> mean(temp)
[1] NA
> mean(temp,na.rm = T) #移除缺失值
[1] 21.75
> is.na(temp)  #判断是否为缺失值
[1] FALSE FALSE FALSE FALSE  TRUE

缺失值的意义是应该有数据而没有,起到一个占位符的作用。
空值的意义则是没有,空值的表示是NULL。
下面的例子中temp仍然只有四个元素

> temp<-c(25,36,14,12,NULL)
> temp
[1] 25 36 14 12

# NULL有时候可以用来方便的删除复杂对象中的一个元素。例如上面的例子中,
> data$age<-NULL
> data
  city
1    a
2    b
3    c
4    d

5.公式

形式均是类似y~x的这种写法。波浪号左侧为因变量,波浪号右侧为自变量。
如果数据中变量较少我们可以直接手工输入,但如果遇到几十个变量,我们可以编程生成公式。
下面的例子就是生成有20个自变量的公式。

n<-1:20
> xvar<-paste0('x',n)  #x与n连接没有空格,使用引号
> xvar
 [1] "x1"  "x2"  "x3"  "x4"  "x5"  "x6"  "x7"  "x8" 
 [9] "x9"  "x10" "x11" "x12" "x13" "x14" "x15" "x16"
[17] "x17" "x18" "x19" "x20" 
> right<-paste(xvar,collapse = '+')   #使用‘+’号连接
> right
[1] "x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20"
> left<-'y~'
> my_formula<-paste(left,right)
> my_formula
[1] "y~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 
> my_formula<-as.formula(my_formula)
> class(my_formula)
[1] "formula"

> xvar2<-paste('x',n) #x与n 连接有空格
> xvar2
 [1] "x 1"  "x 2"  "x 3"  "x 4"  "x 5"  "x 6"  "x 7" 
 [8] "x 8"  "x 9"  "x 10" "x 11" "x 12" "x 13" "x 14"
[15] "x 15" "x 16" "x 17" "x 18" "x 19" "x 20"

# 补充:
> paste('a',1:6,sep = '=',collapse = ',')  
[1] "a=1,a=2,a=3,a=4,a=5,a=6"     #1个元素
> paste('a',1:6,sep = '=')  
[1] "a=1" "a=2" "a=3" "a=4" "a=5" "a=6"    #6个元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值