R 用子字符串向量子集data.table
假设我们得到了这个数据表R 用子字符串向量子集data.table,r,substring,data.table,subset,R,Substring,Data.table,Subset,假设我们得到了这个数据表X: 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(randomStrin
X
:
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
复制这一点
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
Vec我们可以使用grep
通过paste
将vector
压缩成单个字符串,方法是使用
压缩ing
X[grep(paste(Vec, collapse="|"), H)]
或者,我们也可以使用相同的方法,通过粘贴模式向量折叠d
(如@Tensibal建议的那样)
我们可以使用grep
通过粘贴将向量
压缩成单个字符串,方法是使用|
X[grep(paste(Vec, collapse="|"), H)]
或者,我们也可以使用相同的方法,通过粘贴模式向量折叠d
(如@Tensibal建议的那样)
我想你也可以用这个:
NewTable <- X[grepl("g",H) | grepl("F",H) | grepl("d",H)]
NewTable我想你也可以用这个:
NewTable <- X[grepl("g",H) | grepl("F",H) | grepl("d",H)]
NewTable我认为像这样的只需要一个元素,而不是一个向量。尝试使用Vectorize
@Akrun你是对的,这是我的问题。我不知道有什么函数可以为这个操作获取向量。顺便说一句,谢谢你的帮助。我想像这样的只需要一个元素,而不是向量。尝试使用Vectorize
@Akrun你是对的,这是我的问题。我不知道有什么函数可以为这个操作获取向量。顺便说一句,谢谢你的帮助。like
正在引擎盖下使用grepl
,我假设paste
方法应该适用于like
的模式
参数也like
正在引擎盖下使用grepl
,我假设paste
方法应该也适用于的模式
参数