我在 R 中有一个字符向量元素,类似于:
[1] Deer giraffe hippopotamus lion
Run Code Online (Sandbox Code Playgroud)
和一个字符串,例如
a <- "ogiraffeps"
Run Code Online (Sandbox Code Playgroud)
如何找到字符向量中包含字符串中模式的元素的索引?我希望能够在不循环字符向量的情况下执行此操作
我是 R 新手,但grep似乎无法处理这个问题,因为它总是使用单个字符串(模式)来查看它是否包含在字符向量中。但是,我想要做的是找到字符串中包含的字符向量的元素。
我想在包含给定字符串的数据帧(“类别”)中查找列的名称。
categories
Groceries Electricity Fastfood Parking
0 SHOP ELCOMPANY MCDONALDS park
1 MARKET ELECT Subway car
2 market electr Restauran 247
Run Code Online (Sandbox Code Playgroud)
假设我想在整个数据帧中搜索字符串“MCDO”。答案应该是“快餐”。我尝试使用 str.contains 但它似乎不适用于数据帧。
我怎样才能实现这个目标?谢谢。
假设我有一个这样的列表。
List = ['MX_QW-765', 'RUC_PO-345', 'RUC_POLO-209'].
Run Code Online (Sandbox Code Playgroud)
我想搜索并返回包含“PO”的匹配项。从技术上讲,我应该有RUC_PO-345作为我的输出,但即使RUC_POLO-209是作为输出与RUC_PO-345.
我有一个字符串,当我用变量检查它时,它没有给我预期的结果。通过使用模式匹配机制,它工作正常。
这是 Perl 中的预期行为吗?如果没有,如何在不使用模式匹配的情况下解决此问题。
代码如下:
#!/usr/bin/perl
use strict;
use warnings;
my $day_of_week = "Monday";
if (($day_of_week ne "Monday") or ($day_of_week ne "Tuesday")){
print "In If. Today is $day_of_week.\n";
} else {
print "In else part\n";
}
Run Code Online (Sandbox Code Playgroud)
这应该给出输出:
In else part
Run Code Online (Sandbox Code Playgroud)
但它给了我:
In If. Today is Monday.
Run Code Online (Sandbox Code Playgroud)
当我if使用如下模式匹配更改条件时,它工作正常。
if ($day_of_week !~ /Monday|Tuesday) {
Run Code Online (Sandbox Code Playgroud)
我担心的是为什么字符串匹配不能按条件工作。我在这里做错了什么。
亲爱的 StackOverflowers,
我是算法的新手,我正在为以下问题苦苦挣扎:如果我有 2 个字符串s1和s2,其中s2是s1. 它需要找到从s1到的最小可能循环偏移s2。
让我举个例子:
s1 = 'I love cookies '
s2 = 'cookies I love '
答案在这里7。
最好采用线性时间。有我失败的试验:
def find_minimum_cyclic_shift(s1, s2):
if len(s1) != len(s2):
return -1
index = s2.index(s1[0])
if (index > -1):
if (s1==s2):
return 0;
#finalPosition = len(s2) - index
#print(finalPosition, " index=",index)
#return s2[0] == s1[finalPosition] and s1[finalPosition::]==s2[0:index]
return index
Run Code Online (Sandbox Code Playgroud)
但它不适用于以下情况:absabsabsf和absfabsabs。而不是 4 我有 0. 因为 …
我有一个数据框(dim 2914 x 6),其中一列是动物组和物种缩写的向量,例如“bird_F.pw”,并且我有一个包含几个物种缩写的单独向量,例如“F.pw”。我试图提取数据框中动物组和物种缩写与缩写相似的所有数据行(即,我不知道前缀)。我想使用 %in% 和 %like% 等运算符,但我无法找到生成不相同匹配的方法。
这是一个示例数据框:
df<-cbind(
c("A","B","C","D","E"),
c(1:5),
c("insect_F.vp","bird_L.ts","insect_P.qr","insect_V.cl","bird_H.dw"))
colnames(df) <- c("season","survey_id","pollinator")
Run Code Online (Sandbox Code Playgroud)
这是我想在该数据框中搜索的缩写向量:
abbrevs <- c("L.ts","P.qr","H.dw")
Run Code Online (Sandbox Code Playgroud)
我的预期结果是:
output <- cbind(c("B","C","E"),c(2:3,5),c("bird_L.ts","insect_P.qr","bird_H.dw"))
colnames(output) <- colnames(df)
Run Code Online (Sandbox Code Playgroud) 嘿我遇到了一个问题,我的程序停止在57802记录中迭代文件由于某些原因我无法弄清楚.我放了一个心跳部分,所以我可以看到它在哪条线上并且它有所帮助,但现在我被困在为什么它停在这里.我认为这是一个内存问题,但我只是在我的6GB内存计算机上运行它仍然停止.
有没有更好的方法来做我在下面做的任何事情?我的目标是读取文件(如果您需要我发送给您,我可以15MB文本日志)根据正则表达式找到匹配并打印匹配行.还有更多,但就我而言.我正在使用python 2.6
任何想法也会帮助和编码评论!我是一个python noob,我还在学习.
import sys, os, os.path, operator
import re, time, fileinput
infile = os.path.join("C:\\","Python26","Scripts","stdout.log")
start = time.clock()
filename = open(infile,"r")
match = re.compile(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}),\d{3} +\w+ +\[([\w.]+)\] ((\w+).?)+:\d+ - (\w+)_SEARCH:(.+)')
count = 0
heartbeat = 0
for line in filename:
heartbeat = heartbeat + 1
print heartbeat
lookup = match.search(line)
if lookup:
count = count + 1
print line
end = time.clock()
elapsed = end-start
print "Finished processing at:",elapsed,"secs. Count of records =",count,"."
filename.close()
Run Code Online (Sandbox Code Playgroud)
这是第57802行,它失败了:
2010-08-06 08:15:15,390 DEBUG …Run Code Online (Sandbox Code Playgroud) 在SSIS中,当我尝试在"CourseName"上对表1和表2进行合并连接时,结果显示只映射了部分列.也就是说,即使这两个表中的值具有相同的数据类型并且具有相同的"Coursename",它们在SSIS中的左合并连接中也被视为"不匹配".有人可以帮帮我吗?
PS
我正在尝试基于关键字过滤器过滤推文。该过滤器可能包含10个单词或更多。因此,如果一条推文包含关键字,就会通过。我唯一能想到的就是将推文的文本拆分为令牌。然后,我将遍历过滤器单词,并将每个标记与过滤器中的每个单词进行比较。但是这种方式似乎很慢。假设关键字过滤器有N个关键字,令牌数为M,则其需求为O(N * M)。
有没有更好的方法?