替换dataframe中与矩阵中的字符串匹配的字符串

替换dataframe中与矩阵中的字符串匹配的字符串,r,string,matrix,replace,match,R,String,Matrix,Replace,Match,我有一个数据帧df,有一系列NA和字符串,还有两个矩阵匹配和值,具有相同的ncol和nrowmatch在df 我想用value中的字符串替换df中的字符串。如果df中的字符串与match中的值匹配,则可以在相同位置用value中的字符串替换它 我相信第一步是创建一个新的df,它在df中的位置是匹配的 df1 <- which(df %in% match) #nothing valuable... df1我们可以取消列出数据帧,并将数据帧的元素与m1的元素进行匹配,并使用索引从值中获取相应

我有一个数据帧
df
,有一系列NA和字符串,还有两个矩阵
匹配
,具有相同的
ncol
nrow
match
df

我想用
value
中的字符串替换
df
中的字符串。如果
df
中的字符串与
match
中的值匹配,则可以在相同位置用
value
中的字符串替换它

我相信第一步是创建一个新的df,它在df中的位置是匹配的

df1 <- which(df %in% match) #nothing valuable...

df1我们可以
取消列出
数据帧,并
数据帧的元素与
m1
的元素进行匹配,并使用索引从
中获取相应的值

df[] <- value[match(unlist(df), m1)]
df

#    V1   V2      V3   V4
#1 Good Stop Average  Bad
#2  Bad <NA>    Stop Good
#3 <NA> <NA>    <NA> Good

df[]我们可以
取消列出
数据框,并
数据框的元素与
m1
的元素进行匹配,并使用索引从
中获取相应的值

df[] <- value[match(unlist(df), m1)]
df

#    V1   V2      V3   V4
#1 Good Stop Average  Bad
#2  Bad <NA>    Stop Good
#3 <NA> <NA>    <NA> Good
df[]这也应该有效

> m<-apply(df,2,function(x) match(x,match))
> df2<-as.data.frame(matrix(value[m],ncol =ncol(df),nrow=nrow(df)))
> df2
       V1      V2      V3   V4
1    Good    Stop Average  Bad
2     Bad Average    Stop Good
3 Average    Stop     Bad Good
>m df2 df2
V1 V2 V3 V4
1良好停止平均值不良
2坏的平均停止好
3平均停止坏的好的
这也应该有效

> m<-apply(df,2,function(x) match(x,match))
> df2<-as.data.frame(matrix(value[m],ncol =ncol(df),nrow=nrow(df)))
> df2
       V1      V2      V3   V4
1    Good    Stop Average  Bad
2     Bad Average    Stop Good
3 Average    Stop     Bad Good
>m df2 df2
V1 V2 V3 V4
1良好停止平均值不良
2坏的平均停止好
3平均停止坏的好的

我们可以将
lappy
匹配使用

df[] <- lapply(df, function(x) value[match(x, match)])
df
#   V1   V2      V3   V4
#1 Good Stop Average  Bad
#2  Bad <NA>    Stop Good
#3 <NA> <NA>    <NA> Good

df[]我们可以将
lappy
match
一起使用

df[] <- lapply(df, function(x) value[match(x, match)])
df
#   V1   V2      V3   V4
#1 Good Stop Average  Bad
#2  Bad <NA>    Stop Good
#3 <NA> <NA>    <NA> Good

df[]或使用
plyr
矩阵(映射值(未列出(df)、c(匹配)、c(值))、dim(df))
或使用
plyr
矩阵(映射值(未列出(df)、c(匹配)、c(值))、dim(df))
简单明了。为了添加nomatch,以防我想保留字符串。加上'df[]@Chrisftw我没听懂
以保留字符串
??你是说一个空字符串而不是
NA
?。你的目标是什么?你的答案是正确的。如果
df
中的某些字符串与
values
中的字符串不匹配,我想添加一个
nomatch
参数来保留不匹配的字符串。@Chrisftw使用
nomatch
并不简单。我想你需要像
v1这样简单明了的东西。为了添加nomatch,以防我想保留字符串。加上'df[]@Chrisftw我没听懂
以保留字符串
??你是说一个空字符串而不是
NA
?。你的目标是什么?你的答案是正确的。如果
df
中的某些字符串与
values
中的字符串不匹配,我想添加一个
nomatch
参数来保留不匹配的字符串。@Chrisftw使用
nomatch
并不简单。我想你需要像
v1这样的东西