gpt4 book ai didi

regex - 从 data.frame 中选择以 R 中的特定字符串结尾的行

转载 作者:行者123 更新时间:2023-12-03 07:17:00 24 4
gpt4 key购买 nike

我正在使用 R,并且有一个包含近 2,000 个条目的 data.frame,如下所示:

> head(PVs,15)
LogFreq Word PhonCV FreqDev
1593 140 was CVC 5.480774
482 139 had CVC 5.438114
1681 138 zou CVVC 5.395454
1662 137 zei CVV 5.352794
1619 136 werd CVCC 5.310134
1592 135 waren CVV-CV 5.267474
620 134 kon CVC 5.224814
646 133 kwam CCVC 5.182154
483 132 hadden CVC-CV 5.139494
436 131 ging CVC 5.096834
734 130 moest CVVCC 5.054174
1171 129 stond CCVCC 5.011514
1654 128 zag CVC 4.968854
1620 127 werden CVC-CV 4.926194
1683 126 zouden CVV-CV 4.883534

我想要做的是创建一个等于PV的新data.frame,除了所有条目作为“Word”列的成员的字符串不以“te”或“德”被删除。即所有不以“de”或“te”结尾的单词都应从 data.frame 中删除。

我知道如何使用逻辑运算符有选择地从 data.frames 中删除条目,但这些在您设置数字条件时有效。我认为要做到这一点,我需要使用正则表达式,但遗憾的是 R 是我“知道”的唯一编程语言,所以我远不知道这里使用什么类型的代码。

感谢您的帮助。提前致谢。

最佳答案

方法一

您可以将 grepl 与适当的正则表达式一起使用。考虑以下因素:

x <- c("blank","wade","waste","rubbish","dedekind","bated")
grepl("^.+(de|te)$",x)
[1] FALSE TRUE TRUE FALSE FALSE FALSE

正则表达式表示以任意次数开始 (^) (.+),然后查找 de 或 te ((de|te )) 然后结束 ($)。

所以对于你的 data.frame 尝试,

subset(PVs,grepl("^.+(de|te)$",Word))

方法2

要避免使用 regexp 方法,您可以使用 substr 方法。

# substr the last two characters and test
substr(x,nchar(x)-1,nchar(x)) %in% c("de","te")
[1] FALSE TRUE TRUE FALSE FALSE FALSE

所以尝试一下:

subset(PVs,substr(Word,nchar(Word)-1,nchar(Word)) %in% c("de","te"))

关于regex - 从 data.frame 中选择以 R 中的特定字符串结尾的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13012275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com