首页 > 解决方案 > R-gsub 在函数中正常工作

问题描述

我有一个看起来像这样的功能

Common_errors=function(data,pattern,column){
    Type1=all(unlist(strsplit(pattern, "")) == 'C')
    Type2=all(unlist(strsplit(pattern, "")) == 'N')

    if( Type1==TRUE){data[,column]=gsub(0, "o", data[,column])}
    if( Type2==TRUE){data[,column]=gsub("o", 0, data[,column])}
    data}

该函数检查列是否应包含所有字母或数字。如果它应该包含所有数字,那么找到的任何 o 都将更改为 0。如果它应该包含所有字母,则找到的任何 0 都将更改为 o。代码在函数之外工作正常。但在函数内,原始数据集没有变化。非常感谢任何帮助。

我正在使用的数据集只是我快速编写的用于测试代码的东西,看起来像

   Client Country
1      10      Po
2      20      Po
3      30      Po
4      40      Po
5      50      Po
6      60      Po
7      70      Po
8      8o      Po
9      90      P0
10    100      Po
11    11o      Po
12    120      Po
13    130      US
14    140      US
15    150      US
16    160      FS
17    170      US
18    180      US
19    190      US

这是的输出

dput(head(df,10))

structure(list(correct = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, 
TRUE, TRUE, FALSE, TRUE), V = structure(c(3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 2L, 3L), .Label = c("FS", "P0", "Po", "US"), class = "factor")), row.names = c(NA, 
10L), class = "data.frame")

标签: r

解决方案


推荐阅读