Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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
将某些特殊字符,如@或-替换为其实际单词;at";及;破折号;使用R_R_Replace_Special Characters_Substitution - Fatal编程技术网

将某些特殊字符,如@或-替换为其实际单词;at";及;破折号;使用R

将某些特殊字符,如@或-替换为其实际单词;at";及;破折号;使用R,r,replace,special-characters,substitution,R,Replace,Special Characters,Substitution,我一直在R的一些数据清理程序的工作,我遇到了一个问题。我正在尝试将“@”等特殊字符替换为对应的“at” 我试过sub,gsub和setNames甚至replace。 所有这些都产生了相同的结果:它只是在我的数据中给了我大量的NAs。 我有一份我的数据样本,仅供参考 想象一下,我看不到所有@符号的位置,我想搜索整个数据集并替换它们。我的实际数据集有50列,所以按列运行是行不通的 据《强强刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮

我一直在R的一些数据清理程序的工作,我遇到了一个问题。我正在尝试将“@”等特殊字符替换为对应的“at”

我试过
sub
gsub
setNames
甚至
replace
。 所有这些都产生了相同的结果:它只是在我的数据中给了我大量的
NA
s。 我有一份我的数据样本,仅供参考

想象一下,我看不到所有@符号的位置,我想搜索整个数据集并替换它们。我的实际数据集有50列,所以按列运行是行不通的

据《强强刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支;


aa缺少可复制的示例

让我们用不需要的符号创建一个向量:

a <- data.frame(x = c("1", "a", "3@"), y = c("5@", "2", "b"))
并获得:

##    x   y
## 1   1 5at
## 2   a   2
## 3 3at   b
编辑

如果您想用“dash”替换“-”,那么
qdap
包中有一个很好的函数。让我们用两个坏蛋重新创建向量:

a <- data.frame(x = c("1-", "a", "3@"), y = c("5@", "2", "b-"))
《编辑2》

这是可行的,而且相当大:

x <- sample(LETTERS, 1e6, TRUE)
y <- sample(c("", "", "", "@", "-"), 1e6, TRUE)
a <- data.frame(x, y)
b <- apply(a, 1, function(x) paste(x, collapse = ""))

df <- as.data.frame(matrix(b, ncol=50))
df[1:4, 1:10]
  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1  T V-  H  L  T K@  M T@ M-   I
2  G  W F@ K@ W@ T@  R X-  G  G-
3  R E@  V O@  R  D  L  L C-   B
4  T G@  J  U  X H@  Q  Q  T  Z@

df2 <- apply(df, 2, function(x) multigsub(c("@", "-"), c("at", "dash"), x))

grep("-", df2)
integer(0)

grep("@", df2)
integer(0)

df2[1:4, 1:10]
     V1  V2      V3    V4    V5    V6    V7  V8      V9      V10    
[1,] "T" "Vdash" "H"   "L"   "T"   "Kat" "M" "Tat"   "Mdash" "I"    
[2,] "G" "W"     "Fat" "Kat" "Wat" "Tat" "R" "Xdash" "G"     "Gdash"
[3,] "R" "Eat"   "V"   "Oat" "R"   "D"   "L" "L"     "Cdash" "B"    
[4,] "T" "Gat"   "J"   "U"   "X"   "Hat" "Q" "Q"     "T"     "Zat" 

x如果您使用代码制作了一个可复制的示例来生成数据帧并显示所需的结果,这将是一个很好的问题。参见示例数据框,不是全部50列:)另外,应该更改哪些术语?您有列表吗?还是只有
@
-
?我们无法访问您的硬盘。仍然无法访问您的驱动器,因此我无法加载您的文档并查看发生了什么。“什么都没做”是很不具体的。。。您为什么不尝试更好地解释任何错误或警告消息、数据结构或我们可以用来帮助您的任何其他内容?当我运行gsub函数时,它没有错误地完成了,但当我保存数据并将其加载到excel中时,仍然存在“@”。我正试图找出我们如何链接一个文档,这样你们就可以下载它了@pavodivei如果需要更改两个以上的
c(“@“,“-”)
,则
multigsub
中的
模式
替换
向量可以根据需要任意大。
a <- data.frame(x = c("1-", "a", "3@"), y = c("5@", "2", "b-"))
require(qdap)
as.data.frame(apply(a, 2, function(x) multigsub(c("@", "-"), 
                                                c("at", "dash"), 
                                                x))
x <- sample(LETTERS, 1e6, TRUE)
y <- sample(c("", "", "", "@", "-"), 1e6, TRUE)
a <- data.frame(x, y)
b <- apply(a, 1, function(x) paste(x, collapse = ""))

df <- as.data.frame(matrix(b, ncol=50))
df[1:4, 1:10]
  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1  T V-  H  L  T K@  M T@ M-   I
2  G  W F@ K@ W@ T@  R X-  G  G-
3  R E@  V O@  R  D  L  L C-   B
4  T G@  J  U  X H@  Q  Q  T  Z@

df2 <- apply(df, 2, function(x) multigsub(c("@", "-"), c("at", "dash"), x))

grep("-", df2)
integer(0)

grep("@", df2)
integer(0)

df2[1:4, 1:10]
     V1  V2      V3    V4    V5    V6    V7  V8      V9      V10    
[1,] "T" "Vdash" "H"   "L"   "T"   "Kat" "M" "Tat"   "Mdash" "I"    
[2,] "G" "W"     "Fat" "Kat" "Wat" "Tat" "R" "Xdash" "G"     "Gdash"
[3,] "R" "Eat"   "V"   "Oat" "R"   "D"   "L" "L"     "Cdash" "B"    
[4,] "T" "Gat"   "J"   "U"   "X"   "Hat" "Q" "Q"     "T"     "Zat"