问题描述
我有一个更大的编程语言 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
并希望在不使用 attach
或 subset
的情况下缩短某些表达式。而不是写
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')