更改r中列中文本的动态值

时间:2017-08-23 13:20:29

标签: r

我在R

中有以下数据框
 param           values
 pred_qc1_moves     345
 pred_qc2_moves     444
 pred_qc3_moves     333
 abc              23.54
 def              44.65

动态生成前3行。共有6行pred_1_moves,pred_2_moves,pred_3_moves,pred_4_moves,pred_5_moves,pred_6_moves 可以有2或3或4或5或6个这样的行

我想将此文本替换为以下

 param               values
 Predicted QC1 Moves     345
 Predicted QC2 Moves     444
 Predicted QC3 Moves     333
 abc                   23.54
 def                   44.65

我怎么能在R?中做到这一点?

3 个答案:

答案 0 :(得分:2)

我不是专家,但我认为你可以使用函数methods: { addMessage(e) { this.messages.push(e.target.value); } } ;

假设您的数据框名为gsub

df

答案 1 :(得分:2)

对于修订的示例数据,您可以使用:

sub("^pred_(.+)_moves$", "Predicted \\U\\1 Moves", df$param, perl = TRUE)
#[1] "Predicted QC1 Moves" "Predicted QC2 Moves" "Predicted QC3 Moves"
#[4] "abc"                 "def"  

您可以通过捕获组并使用新值替换单个sub来执行此操作。

df$param <- sub("^(pred_)(\\d+)(_moves)$", "Predicted \\2 Moves", df$param)
#              param values
#1 Predicted 1 Moves 345.00
#2 Predicted 2 Moves 444.00
#3 Predicted 3 Moves 333.00
#4               abc  23.54
#5               def  44.65

不符合条件的其他行保持不变。

答案 2 :(得分:1)

<script>

        mapboxgl.accessToken = 'example-token'; // replace this with your access token
        var map = new mapboxgl.Map({
            container: 'map',
            style: 'example-style' // replace this with your style URL
        });

        // code from the next step will go here

        map.on('click', function(e) {
            var features = map.queryRenderedFeatures(e.point, {
                layers: ['pillbox-data'] // replace this with the name of the layer
            });

            if (!features.length) {
                return;
            }

            var feature = features[0];

            var popup = new mapboxgl.Popup({
                    offset: [0, -15]
                })
                .setLngLat(feature.geometry.coordinates)
                .setHTML('<h3>' + feature.properties.title + '</h3><p>' + feature.properties.description + '</p>')
                .setLngLat(feature.geometry.coordinates)
                .addTo(map);
        });

        map.addControl(new MapboxGeocoder({
            accessToken: mapboxgl.accessToken
        }));


</script>