Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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
String 数据帧中的R变量字符串替换_String_R_Replace - Fatal编程技术网

String 数据帧中的R变量字符串替换

String 数据帧中的R变量字符串替换,string,r,replace,String,R,Replace,我有一个如下所示的数据框: df <- data.frame(one=c("s1_below_10", "s2_below_20"), two=c("s3_above_10","s4_above_10")) 我想知道如何执行此替换(数据集非常大)。感谢您的帮助。基本的gsub呼叫如下: gsub("^.+?(\\d+)_.+","\\1",df$one) [1] "1" "2" 您可以将其lappy应用于每列: data.frame(lapply(d

我有一个如下所示的数据框:

df <- data.frame(one=c("s1_below_10", "s2_below_20"), 
                 two=c("s3_above_10","s4_above_10"))

我想知道如何执行此替换(数据集非常大)。感谢您的帮助。

基本的
gsub
呼叫如下:

gsub("^.+?(\\d+)_.+","\\1",df$one)
[1] "1" "2"
您可以将其
lappy
应用于每列:

data.frame(lapply(df, gsub, pattern="^.+(\\d+)_.+",replacement= "\\1"))
  one two
1   1   3
2   2   4

如果所需的值始终是字符串的第二个字符(在所有示例中都是如此),则可以使用
substr

data.frame(lapply(df, substr, 2, 2))
输出:

  one two
1   1   3
2   2   4

上面的模式将只获取多位数的最后一位(可能是想要的,也可能不是),因为第一个“+”是贪婪的,并且将尽可能匹配。将“+”更改为“+?”的简单更正将使其不贪婪,并使\\d+匹配多个数字。
  one two
1   1   3
2   2   4