是否可以在R中的单独表中引用对象(即表)?

时间:2019-05-10 17:28:54

标签: r

我有一个R脚本,可以生成一个表格,其中包含单个动物的天数和距离:

bill_distance_table =  

|day|distance| date       |  

| 1 | 100    | 04-10-2018 |  
| 2 | 150    | 04-11-2018 |  
| 3 | 125    | 04-12-2018 |  

现在,我想在一组动物上运行此脚本,并将结果表保存到另一个表或数据框中。然后,说我要访问“动物X”距离表,我可以只引用最终表中的该行以返回距离表:

global_table:  

|animal|  name    | table_reference     |  

| 1    |   bill   | bill_distance_table |  
| 2    |   joe    | joe_distance_table  |  
| 3    |   sue    | sue_distance_table  |  

global_table[1,3] 

(would return)

|day|distance| date       |  

| 1 | 100    | 04-10-2018 |  
| 2 | 150    | 04-11-2018 |  
| 3 | 125    | 04-12-2018 |  

我想知道,R可以做到吗?要在表格中嵌套表格?

或者,创建表列表并仅在全局表中引用保存引用键会更容易吗?

谢谢!

HH

我是R的新手,不确定它在Object方面的潜力。

1 个答案:

答案 0 :(得分:0)

是,使用tidyr包,但是数据应该已经在一个数据帧中,例如:

# Give each a dataframe a column with the appropriate name.
bill_dist$animal <- "bill"
joe_dist$animal <- "joe"
sue_dist$animal <- "sue"

# Bind dataframes together.
dist_df <- rbind(bill_dist, joe_dist, sue_dist)

dist_df

#### OUTPUT ####

# A tibble: 9 x 4
    day  dist date       animal
  <int> <dbl> <date>     <chr> 
1     1   100 2018-10-04 bill  
2     2   150 2018-11-04 bill  
3     3   125 2018-12-04 bill  
4     1   130 2018-10-04 joe   
5     2   110 2018-11-04 joe   
6     3    90 2018-12-04 joe   
7     1   160 2018-10-04 sue   
8     2   155 2018-11-04 sue   
9     3   140 2018-12-04 sue   

这种“长”数据框可能比嵌套数据框更有用,即,它更易于操作以进行分析,因此请考虑坚持使用。也就是说,一旦有了此数据框,就可以运行以下命令来获取嵌套的数据框:

library(tidyr)

nested_dist_df <- nest(dist_df, -animal)

nested_dist_df

#### OUTPUT ####

# A tibble: 3 x 2
  animal data            
  <chr>  <list>          
1 bill   <tibble [3 × 3]>
2 joe    <tibble [3 × 3]>
3 sue    <tibble [3 × 3]>

您现在可以使用[[语法访问各个数据帧:

nested_dist_df[[1, 2]]

#### OUTPUT ####

# A tibble: 3 x 3
    day  dist date      
  <int> <dbl> <date>    
1     1   100 2018-10-04
2     2   150 2018-11-04
3     3   125 2018-12-04