除了环境函数附加之外,是否有适用于语言 R 的范围环境以使用 data.frames?

问题描述

我有一个更大的编程语言 R 脚本并使用表格。我有一张桌子base.tab

  ID      LAT      LON ALT.ORTHO TYPE TYPE.ID
1  1 53.75447 12.51539   46.5555 LINE       1
2 10 53.75452 12.51565   46.5445 LINE       1
3 11 53.75452 12.51567   46.5365 LINE       1
4 12 53.75453 12.51570   46.5715 LINE       1
5 13 53.75453 12.51573   46.5785 LINE       1
6 14 53.75454 12.51576   46.6885 LINE       1

并希望在不使用 attachsubset 的情况下缩短某些表达式。而不是写

base.tab.epos <-
     base.tab[(base.tab$TYPE == 'LINE') |
              (base.tab$TYPE == 'RAND'),] 

我想在范围上下文中使用一些东西,例如:

with(base.tab) do { 
    base.tab.epos <-
         base.tab[(TYPE == 'LINE') |
                  (TYPE == 'RAND'),] 
}

在编程语言 R 中有一个表达式可以做到这一点吗?

解决方法

R 有 with/within 函数可以实现这一点。

base.tab.epos <- base.tab[with(base.tab,TYPE == 'LINE' | TYPE == 'RAND'),]

除此之外,您还可以查看 dplyr,它允许您引用列名,而无需每次都使用 data$

library(dplyr)
base.tab.epos <- base.tab %>% filter(TYPE == 'LINE' | TYPE == 'RAND')