假設我們的矢量得到這個數據表X
:子集的data.table由子
Random <- function(n=1, lenght=6){
randomString <- c(1:n)
for (i in 1:n){randomString[i] <- paste(sample(c(0:9, letters, LETTERS),
lenght, replace=TRUE),collapse="")}
return(randomString)}
X <- data.table(A = rnorm(11000, sd = 0.8),
B = rnorm(11000, mean = 10, sd = 3),
C = sample(LETTERS[1:24], 11000, replace=TRUE),
D = sample(letters[1:24], 11000, replace=TRUE),
E = round(rnorm(11000,mean=25, sd=3)),
F = round(runif(n = 11000,min = 1000,max = 25000)),
G = round(runif(11000,0,200000)),
H = Random(11000))
我想通過一些子串子集它。在這裏,我們將採取g
,F
和d
列H
在這裏,我們得到了一個解決方案,爲一個子做到這一點:How to select R data.table rows based on substring match (a la SQL like)
如果我們只希望g
,使用data.table
包:
X[like(H,pattern = "g")]
但我的問題是在單個操作中複製g
,F
和d
。
Vec <- c("g","F","d")
Newtable <- X[like(H,pattern = Vec)]
Warning message:
In grep(pattern, levels(vector)) :
argument 'pattern' has length > 1 and only the first element will be used
有沒有辦法做到這一點,沒有創建3個表,合併它們並刪除重複?
我覺得'like'只會取一個元素而不是一個向量。嘗試使用'Vectorize' – akrun
@Akrun你是對的,這是我的問題。我不知道任何能夠爲此操作獲取矢量的函數。順便說一句,感謝您的幫助。 –