Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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_Quotes_Gsub - Fatal编程技术网

如何在R数据帧中查找和替换双引号

如何在R数据帧中查找和替换双引号,r,quotes,gsub,R,Quotes,Gsub,我有一个这样的数据帧(抱歉,我不能用代码复制实际的数据帧,因为双引号没有显示。Vx是变量): 问题:如何解决使用read.csv函数导入的整个数据帧的双引号问题,其中所有双引号都已删除 我要找的是excel或word中的FIND+REPLACE:找到双引号,然后替换为nothing 注: 1) 我通过运行is.data.frame()函数确认它是一个数据帧 2) 实际的数据帧有数百列,因此遍历每一列并声明它所属的列类型是不可行的 3) 我试着使用以下命令,但没有成功:as.data.frame(

我有一个这样的数据帧(抱歉,我不能用代码复制实际的数据帧,因为双引号没有显示。Vx是变量):

问题:如何解决使用read.csv函数导入的整个数据帧的双引号问题,其中所有双引号都已删除

我要找的是excel或word中的FIND+REPLACE:找到双引号,然后替换为nothing

注: 1) 我通过运行is.data.frame()函数确认它是一个数据帧 2) 实际的数据帧有数百列,因此遍历每一列并声明它所属的列类型是不可行的 3) 我试着使用以下命令,但没有成功:
as.data.frame(sappy(我的数据,函数(x)gsub(“\”,“”,x))
4) 通过在数据框上使用sql进行测试,我确认这不是一个简单的打印问题。除非我使用LIKE而不是=

提前谢谢

2015年7月7日编辑01:根据@alexforrence的要求,以下是几列的d(put)输出:

帐单名帐单姓帐单公司 3 NA 4 Peldi Guilizzoni NA 5 NA 6“詹姆斯·安德鲁”安格斯·纳 7 NA
8 Nova Spivack NA

这里有一个使用
dplyr
stringr
的解决方案。请注意,纯数字列之后将是字符列。从您的描述中,我不清楚是否有纯数字列如果有列,那么您可能希望将它们单独处理,或者在以后将它们转换回数字

require(dplyr)
require(stringr)
df <- data.frame(V1=c("home", "\"give\"", "\"miles\"", "yes"),
           V2=c(15, 32, 5, 45),
           V3=c("\"grand\"", "\"cuz\"", "\"before\"", "\"sorry\""),
           V4=c("terminal", "good", "ten", "fine"))
df
##        V1 V2       V3       V4
## 1    home 15  "grand" terminal
## 2  "give" 32    "cuz"     good
## 3 "miles"  5 "before"      ten
## 4     yes 45  "sorry"     fine

df %>% mutate_each(funs(str_replace_all(., "\"", "")))
##      V1 V2     V3       V4
## 1  home 15  grand terminal
## 2  give 32    cuz     good
## 3 miles  5 before      ten
## 4   yes 45  sorry     fine
require(dplyr)
要求(stringr)
df%每个变异(funs(str替换所有(,“\”,“))
##V1 V2 V3 V4
##1家15大航站楼
##2给32个cuz好
##10点前5分3英里
##4是的45对不起,很好

您可以使用
nchar()
识别双引号


a除上述问题外,我还遇到了一个非常奇怪的问题。利用这些技巧,我编写了一个非常简短的程序:

setClass("char.with.deleted.quotes")
setAs("character", "char.with.deleted.quotes", 
      function(from) as.character(gsub('„',"xxx", as.character(from), fixed = TRUE)))


TMP = read.csv2("./test.csv", header=TRUE, sep=";", dec=",",
                colClasses = c("character","char.with.deleted.quotes"))

temp <- gsub('„', "xxx", TMP$Name, fixed=TRUE)
print(temp)
它读取虚拟csv:

Number;Name
X-23;This is some „Test
K-33.01;And another „Test
我的目标是在单词测试之前去掉这个双引号。然而,这到目前为止还不起作用。这是因为这个双引号

相反,如果我选择替换字符的不同部分,它可以使用read.csv2和上面的类定义,或者直接使用gsub将其保存到temp变量中


现在真正奇怪的是以下几点。运行程序后,我复制了两行“temp”,您可以使用
dput()
,例如
dput(head(df))
,为我们提供data.frame的子集。然后将输出粘贴为对您的问题的编辑。或者对于较少的列,
dput(head(df[,1:n])
,n为列数。@克劳斯·威尔克:我不想手动修复变量,因为在一个文件中有数百个这样的情况。我希望应用一个函数,可以将其应用于我正在处理的所有文件。@克劳斯·威尔克:感谢您的帮助!我所说的“3”是指我尝试了。。。但是它不起作用”就是代码运行良好,没有错误,但是R对象仍然在相同的观察结果中显示相同的引号。我不能给你dput(head(df))的完整输出,因为它太长了,并且没有字符了。如果我给你一些我注意到这个问题的地方,怎么样?这里有一些:billing_address1=c(NA,“\“504 Lavaca\”,NA,NA,NA,“\”60 Hurantario St.\”,账单地址2=c(NA,“\”Suite 1000\”,NA,NA,NA,“\”Suite 201\”,…..class=“data.frame”)这是否与某些观察结果之间是带有字符的字符串这一事实有关?在这种情况下,空间?我注意到了这些数据中的模式。很抱歉,在您提供完整且可复制的问题描述之前,我无法进一步提供帮助。
setClass("char.with.deleted.quotes")
setAs("character", "char.with.deleted.quotes", 
      function(from) as.character(gsub('„',"xxx", as.character(from), fixed = TRUE)))


TMP = read.csv2("./test.csv", header=TRUE, sep=";", dec=",",
                colClasses = c("character","char.with.deleted.quotes"))

temp <- gsub('„', "xxx", TMP$Name, fixed=TRUE)
print(temp)
> source('test.R')
[1] "This is some „Test" "And another „Test" 
[1] " "
Number               Name
1    X-23 This is some „Test
2 K-33.01  And another „Test
Number;Name
X-23;This is some „Test
K-33.01;And another „Test
> source('test.R')
[1] "This is some „Test" "And another „Test" 
[1] "This is some „Test" "And another „Test" 
[1] " "
Number               Name
1    X-23 This is some „Test
2 K-33.01  And another „Test
> 
> temp <- gsub('„', "xxx", TMP$Name, fixed=TRUE)
> print(temp)
[1] "This is some xxxTest" "And another xxxTest"
> TMP$Name <- gsub('„', "xxx", TMP$Name, fixed=TRUE)
> print(TMP)
Number                 Name
1    X-23 This is some xxxTest
2 K-33.01  And another xxxTest