我有一个包含各种列的数据框,某些列中的某些数据包含双引号,我想删除它们,例如:
ifstream myfile("paths.txt");
std::map<int, int> mymap;
int a, b;
while (myfile.good())
{
myfile >> a >> b;
mymap[a] = b;
}
mymap;
我希望看起来像这样:
ID name value1 value2
"1 x a,"b,"c x"
"2 y d,"r" z"
答案 0 :(得分:12)
我会使用lapply
循环列,然后使用"
替换gsub
。
df1[] <- lapply(df1, gsub, pattern='"', replacement='')
df1
# ID name value1 value2
#1 1 x a,b,c x
#2 2 y d,r z
如果需要,可以使用class
type.convert
df1[] <- lapply(df1, type.convert)
df1 <- structure(list(ID = c("\"1", "\"2"), name = c("x", "y"),
value1 = c("a,\"b,\"c",
"d,\"r\""), value2 = c("x\"", "z\"")), .Names = c("ID", "name",
"value1", "value2"), class = "data.frame", row.names = c(NA, -2L))
答案 1 :(得分:2)
一种选择是使用apply()
和gsub()
函数删除所有双引号:
df <- data.frame(ID=c("\"1", "\"2"),
name=c("x", "y"),
value1=c("a,\"b,\"c", "d,\"r\""),
value2=c("x\"", "z\""))
df <- data.frame(apply(df, 2, function(x) {
x <- gsub("\"", "", x)
})
> df
ID name value1 value2
1 1 x a,b,c x
2 2 y d,r z
答案 2 :(得分:0)
要删除$,您必须将\\ $转义。试试:
df [] <-lapply(df,gsub,pattern =“ \\ $”,replacement =“”)