导入后从csv中删除所有标点符号

ATM*_*TMA 1 csv r

假设我有一个包含以下数据的数据框(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函数将函数应用于每个数据框列?

Sim*_*lon 6

就像@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内完成.可爱.