Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何从数据集中部分删除特定符号(如逗号)_R - Fatal编程技术网

R 如何从数据集中部分删除特定符号(如逗号)

R 如何从数据集中部分删除特定符号(如逗号),r,R,我有这样一个数据集: Quest_main=c("quest2,","quest5,","quest4,","quest12,","quest4,","quest5,quest7") 我想从例如“quest2”中去掉逗号,这样它就是“quest2”,而不是“quest5,quest7”。我想我必须使用substr或ifelse,但我不确定。当我调用Quest_main时,最终的结果是: "quest2" "quest5" "quest4" "quest12" "quest4"

我有这样一个数据集:

Quest_main=c("quest2,","quest5,","quest4,","quest12,","quest4,","quest5,quest7")
我想从例如“quest2”中去掉逗号,这样它就是“quest2”,而不是“quest5,quest7”。我想我必须使用substr或ifelse,但我不确定。当我调用Quest_main时,最终的结果是:

 "quest2"   "quest5"   "quest4"   "quest12"   "quest4"   "quest5,quest7"
谢谢

你所需要的就是

gsub(",$","",Quest_main)
$
表示字符串的结尾:有关详细说明,请参阅(长且复杂的)
?regexp
,或a,或在堆栈溢出上搜索标记
[r][regex]

如果您坚持使用
substr()
ifelse()
,您可以:

nc <- nchar(Quest_main)
lastchar <- substr(Quest_main,nc,nc)
ifelse(lastchar==",",substr(Quest_main,1,nc-1),
                     Quest_main)

nc这里有一种替代方法(仅针对一般知识)使用

当您不仅要从单词的末尾删除逗号,还要指定其他条件时,这种方法更为通用


一个更通用的解决方案是使用
stringi
s
stri_trim_right
,这将在Bens或Jealie解决方案失败的情况下起作用,例如,当您想删除的句子末尾有许多逗号时,例如:

Quest_main <- c("quest2,,,," ,"quest5,quest7,,,,")
Quest_main
#[1] "quest2,,,,"        "quest5,quest7,,,,"
library(stringi)
stri_trim_right(Quest_main, pattern = "[^,]")
#[1] "quest2"        "quest5,quest7"

Quest\u main带有
子字符串和
ifelse

ifelse(substring(Quest_main,nchar(Quest_main))==',',substring(Quest_main,1,nchar(Quest_main)-1),Quest_main)

这是一种超快速的方法。但是如果用ifelse和substr有可能吗?Trik23:看看我的答案。但是Ben Bolker的答案要好得多:)@Trik23-对于
substr
,您首先需要找到
发生的位置,这比
gsub
@BenBolker作为R的初学者效率要低得多,我想看看不同的命令在R中是如何工作的。只是个人的好奇心和保持学习曲线。但是请注意,
gsub(“,+$”,“”,Quest_main)
在这种情况下可以正常工作
stringi
通常更快,但在其他方面则更方便。其他
stringi
/
gsub
比较:,
ifelse(substring(Quest_main,nchar(Quest_main))==',',substring(Quest_main,1,nchar(Quest_main)-1),Quest_main)