我试图通过我创建的字符向量对空间线数据框进行子集化 我的数据如下:
> head(All_travs)
FEATURE_ID TRAV_No PROJECT_ID SHAPE_LENG SHAPE_LEN
0 7586 TR_220_N 1 0.17261653 0
1 7593 TR_215_N 1 0.10003741 0
2 7594 TR_210_N 1 0.06658912 0
3 7585 TR_220_S 1 0.12964761 0
4 45038 TR_8 1 0.13393442 0
5 45001 TR_14 1 0.20971781 0
如下所示,All_travs有72个以
开头的功能 > All_travs
class : SpatialLinesDataFrame
features : 72
extent : 154037.7, 352737.3, -480490.4, -332383.8 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=22 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
variables : 5
names : FEATURE_ID, TRAV_No, PROJECT_ID, SHAPE_LENG, SHAPE_LEN
min values : 7585, TR_10, 1, 0.02586690, 0
max values : 58694, TR_95_S, 1, 0.73055204, 0
我发现的最接近的答案就在这里 Filtering a data frame on a vector 但由于某些原因,它对我不起作用:
当我尝试通过其元素与列Trav_No中的某些元素匹配的向量对数据帧进行子集化时:
sel<-c("TR_19", "TR_75_N", "TR_85_N", "TR_95_N")
Trav_sel<-subset(All_travs, All_travs$TRAV_No %in% sel)
它保留了0个功能......
> Trav_sel
class : SpatialLinesDataFrame
features : 0
coord. ref. : +proj=utm +zone=22 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
variables : 5
names : FEATURE_ID, TRAV_No, PROJECT_ID, SHAPE_LENG, SHAPE_LEN
>
...但显然是Trav_sel $ TRAV_No
中的所有值> All_travs$TRAV_No
[1] TR_220_N TR_210_N TR_95_S TR_20 TR_125
69 Levels: TR_10 TR_100_N TR_100_S TR_105_N TR_105_S TR_11 TR_110_N TR_110_S TR_115_N TR_115_S ... TR_95_S
> Trav_sel$TRAV_No
factor(0)
69 Levels: TR_10 TR_100_N TR_100_S TR_105_N TR_105_S TR_11 TR_110_N TR_110_S TR_115_N TR_115_S ... TR_95_S
当我尝试匹配时,我得到所有NAs
> match<-match(sel, All_travs$TRAV_No,)
> match
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
我无法理解这种行为,或者如何正确过滤我的这个载体。有什么建议吗?