Replace 如何在Julia中用变量模式替换DataFrame列中的子字符串?

Replace 如何在Julia中用变量模式替换DataFrame列中的子字符串?,replace,julia,Replace,Julia,假设我有一个包含两列的数据框-gibberish和letter。 我想替换乱码中的子字符串,以便只保留与字母匹配的子字符串,例如,如果乱码是“kjkj”,而字母是乱码我想乱码等于“jj” 数据帧定义为: df = DataFrame(gibberish = ["dqzzzjbzz", "jjjvjmjjkjjjjjjj", "mmbmmlvmbmmgmmf"], letter = ["z", "j"

假设我有一个包含两列的数据框-
gibberish
letter
。 我想替换
乱码
中的子字符串,以便只保留与
字母
匹配的子字符串,例如,如果
乱码
“kjkj”
,而
字母
乱码
我想
乱码
等于
“jj”

数据帧定义为:

df = DataFrame(gibberish = ["dqzzzjbzz", "jjjvjmjjkjjjjjjj", "mmbmmlvmbmmgmmf"], letter = ["z", "j", "m"])
如果我没有
字母
变量并且只想要,让我们假设“x”保持不变,我会:

df.gibberish.= replace.(gibberish, r"[^x;]" => "")
这很好,但是当我尝试做同样的事情,但是把
letter
列作为regex表达式中的变量时,它就坏了。 我试着用“正常”的DataFrames.jl方式和DataFramesMeta.jl快捷方式
@transform

df.gibberish.= replace.(gibberish, Regex(join(["[^", letter, ";]"])) => "")
这将导致错误为

ERROR: UndefVarError: letter not defined
@transform
方式根本不起任何作用:

julia> @transform(df, filtered = replace(:gibberish, Regex.(join(["[^", :letter, ";]"])) => ""))
3×3 DataFrame
│ Row  │ letter │ gibberish         │ filtered          │
│      │ String │ String            │ String            │
├──────┼────────┼───────────────────┼───────────────────┤
│ 1    │ z      │ dqzzzjbzz         │ dqzzzjbzz         │
│ 2    │ j      │ jjjvjmjjkjjjjjjj  │ jjjvjmjjkjjjjjjj  │
│ 3    │ m      │ mmbmmlvmbmmgmmf   │ mmbmmlvmbmmgmmf   │
我是Julia的新手,我可能错过了一些非常基本的东西,但正确的解决方案却让我不知所措。 除了编写效率极低的行循环之外,我如何解决这个问题

replace.(gibberish, Regex(join(["[^", letter, ";]"]))
字母在这里指的是Julia变量(未定义),而不是DataFrame的列

你可以试试类似的东西

Regex.(string.("[^" .* df.letter .* ";]"))

使用数据帧行作为输入构建正则表达式数组。

提供更完整、可复制的代码以获得更高质量的帮助。例如,您的问题没有显示您定义的字母是什么-它是在哪里定义的?我添加了一些关于它是如何定义的代码。我尝试执行
df.filtered=replace.(df.gibberish,Regex.(string.(“[^.*gibberish.letter.*;”)=>”)
但出现了一个错误
错误:MethodError:没有匹配findnext(::Array)的方法{Regex,1},::String,::Int64)
是否可以在=>之前添加一个点?