The variety of R syntaxes give you many ways to “say” the same thing.
R语言存在多种Syntax,最为常用的是base R (dollar sign), tidyverse和formula syntax,实际使用中经常出现不同Syntax混用的情况,对学习造成了一定困扰。因此除了应用场景,我也会注意Syntax的使用。
Dataframe
数据
查询和提取
- datafram和tibble在提取列的时后使用
tt[,'age']
有区别(不兼容,应避免使用)。这些语法也可以推广到list
|
data.frame |
tibble |
list |
tt$age |
vector |
vector |
list |
tt['age'] |
data.frame 1 column |
tibble 1 column |
list |
tt[,'age'] |
vector |
tibble 1 column |
无效 |
tt[['age']] |
vector |
vector |
vector |
- datafram和tibble在使用逻辑下标时,datafram可以使用matrix,而tibble则会抛错,相比之下tibble的语法更统一了
|
data.frame |
tibble |
tt[tt$age>15,] |
OK |
OK |
tt[tt['age']>15] |
OK |
NO |
tt[tt['age']>15,] |
OK |
OK |
tt[tt[,'age']>15,] |
OK |
OK |
tt[tt[['age']]>15,] |
Ok |
OK |
tt[which(tt$age>15),] |
OK |
OK |
参考资料7 R向量下标和子集
聚合
- 窗口函数的使用:累计降水和累计均值
巧用R语言中各类聚合窗口函数
1 2 3 4 5
| prcp <- prcp %>% group_by(COUNTRY_NAME) %>% mutate( CMEAN_PRCP = order_by(YEAR, cummean(AVG_PRCP)), CSUM_PRCP = order_by(YEAR, cumsum(AVG_PRCP)) )
|
更新值
- 更新一列中部分值
1
| prcp$COUNTRY_NAME[prcp$COUNTRY_NAME=="Bahamas, The"] <- "Bahamas"
|
变量
类型
变量转换
- 将shiny widget的input变量作为对象(值或是字符串代表的对象)
1 2 3 4 5
|
radioButtons("cmethod", label=("Choose a method"), choices = list("Cumulative Average" = "CMEAN_PRCP", "Cumulative Sum" = "CSUM_PRCP"), selected = "CMEAN_PRCP")
sliderInput("syear", label = ("Years Range"), min = 1764, max = 2020, value = c(1764,2020))
|
1 2 3 4 5 6 7 8 9 10
| prcp_year <- prcp %>% filter(YEAR>=input$syear[1],YEAR<=input$syear[2]) %>% group_by(COUNTRY_NAME) %>% mutate( LAST_PRCP = last( eval(parse(text = input$cmethod)), order_by = YEAR) ) %>% select(COUNTRY_NAME, LAST_PRCP) %>% distinct()
|
以下两篇文章解释的更全面,eval(parse(text = ))的方来来自于第二篇
变量名称和字符串的转换
如何将字符串转变为命令行?