假设我有一个包含以下数据的数据框(df):
df = data.frame(name=c("David","Mark","Alice"),
income=c("5,000","10,00","$50.55"),
state=c("KS?","FL","CA;"))
Run Code Online (Sandbox Code Playgroud)
我想集体删除此数据框中的所有标点符号.当然,我可以将每列作为单独的向量并在其上运行gsub命令(见下文),但我想删除整个数据框中的所有标点符号.
gsub("[?.;!¡¿·']", "", df$state)
Run Code Online (Sandbox Code Playgroud)
有没有办法在R中指定它而不编写for循环或使用apply函数将函数应用于每个数据框列?
就像@joran说的那样,你可以使用sed像s你这样摆脱想要摆脱的标点符号...
# Writing your data out to a file
write.table( df , "~/input.txt" , sep = "\t" )
# Reading it back in again, sans punctuation
read.table( pipe( paste0( "sed s'/[[:punct:]]//g' /Users/Simon/input.txt" ) ) , head=TRUE)
# name income state
#1 David 5000 KS
#2 Mark 1000 FL
#3 Alice 5055 CA
Run Code Online (Sandbox Code Playgroud)
sed在读入R时逐行处理您的文件.使用[[:punct:]]regexp类将确保您确实删除所有标点符号.
它可以完全在R内完成.可爱.