我有以下的數據幀:如何字符向量變換到正則表達式數據幀索引
df<- structure(list(ID = c(9000099L, 9000296L, 9000622L, 9000798L,
9001104L, 9001400L), VERSION = structure(c(1L, 1L, 1L, 1L, 1L,
1L), .Label = "1.2.1", class = "factor"), V01SF1 = c(1L, 2L,
2L, 3L, 2L, 1L), V01SF2 = c(3L, 3L, 3L, 3L, 3L, 3L), V01BD1 = c(2L,
3L, 3L, 2L, 3L, 3L), V01BD2 = c(5L, 5L, 5L, 3L, 5L, 5L)), .Names = c("ID",
"VERSION", "V01SF1", "V01SF2", "V01BD1", "V01BD2"), row.names = c(NA,
6L), class = "data.frame")
> df
ID VERSION V01SF1 V01SF2 V01BD1 V01BD2
1 9000099 1.2.1 1 3 2 5
2 9000296 1.2.1 2 3 3 5
3 9000622 1.2.1 2 3 3 5
4 9000798 1.2.1 3 3 2 3
5 9001104 1.2.1 2 3 3 5
6 9001400 1.2.1 1 3 3 5
我想索引該數據幀與「版本」列和含有SF和DF在他們的名字列。我有一個載體,我想在DF名稱作爲使用的模式搜索的元素:
vars<- c ("SF", "DF")
我對版本進行索引很容易:
df [grep ("SION", names (df), value =T)]
VERSION
1 1.2.1
2 1.2.1
3 1.2.1
4 1.2.1
5 1.2.1
6 1.2.1
我如何添加從矢量grep ("SION", names (df), value =T)
元素作爲grep模式的vars<- c ("SF", "DF")
? 生成的代碼應爲df [grep ("SION|SF|BD", names (df), value =T)]
工作給予以下的輸出:
VERSION V01SF1 V01SF2 V01BD1 V01BD2
1 1.2.1 1 3 2 5
2 1.2.1 2 3 3 5
3 1.2.1 2 3 3 5
4 1.2.1 3 3 2 3
5 1.2.1 2 3 3 5
6 1.2.1 1 3 3 5
非常感謝您
使用'grepl()'將使該代碼更加簡潔。 – hadley
'grepl'幾乎總是索引的正確答案。 –