在 r 中的数据框中搜索字符串的快速方法
Quick way to search strings in a dataframe in r
我有一个向量包含一些像这样的字符串
f <- c("a","b","c")
我有一个包含一些列的数据框 (df):
h1 h2 ...
1 a 20 ...
2 a 50 ...
3 a 60 ...
4 e 70 ...
5 e 80 ...
...
现在我正在尝试编写代码来找出包含与向量中相同字符串的行。
即:样本输出
h1 h2 ...
1 a 20 ...
2 a 50 ...
3 a 60 ...
...
我的解决方案是使用 for 循环遍历 f 中的每个项目,然后使用 grep 查找我想要的行。并使用 rbind() 将行放在一起。
for(item in f){
newdf <- rbind(newdf, df[grep(item, df$h1),])
}
但是我的数据集非常大,这需要很长时间才能找到我想要的所有行。
不知道有没有人有更好的解决办法
这应该比 for 循环快得多:
df[df$h1 %in% f,]
# h1 h2
#1 a 20
#2 a 50
#3 a 60
我有一个向量包含一些像这样的字符串
f <- c("a","b","c")
我有一个包含一些列的数据框 (df):
h1 h2 ...
1 a 20 ...
2 a 50 ...
3 a 60 ...
4 e 70 ...
5 e 80 ...
...
现在我正在尝试编写代码来找出包含与向量中相同字符串的行。
即:样本输出
h1 h2 ...
1 a 20 ...
2 a 50 ...
3 a 60 ...
...
我的解决方案是使用 for 循环遍历 f 中的每个项目,然后使用 grep 查找我想要的行。并使用 rbind() 将行放在一起。
for(item in f){
newdf <- rbind(newdf, df[grep(item, df$h1),])
}
但是我的数据集非常大,这需要很长时间才能找到我想要的所有行。
不知道有没有人有更好的解决办法
这应该比 for 循环快得多:
df[df$h1 %in% f,]
# h1 h2
#1 a 20
#2 a 50
#3 a 60