首页 > 解决方案 > R粘贴具有特定前缀的所有变量

问题描述

我想粘贴一组具有给定前缀的变量的内容。例如,给定以下数据:

data <- data.frame(var_1=c(1,2,3,4,5),
                   var_2=c(1,2,3,4,5),
                   var_3=c(1,2,3,4,5))

我想复制以下行为而不单独列出每个变量名称,而是粘贴所有带有前缀“var_”的变量:

my_strings <- paste(toy_data$var_1,
                    toy_data$var_2,
                    toy_data$var_3)

my_strings
[1] "1 1 1" "2 2 2" "3 3 3" "4 4 4" "5 5 5"

标签: r

解决方案


我们可以用do.callfor row wise paste来做到这一点

do.call(paste, data[startsWith(names(data), 'var')])
#[1] "1 1 1" "2 2 2" "3 3 3" "4 4 4" "5 5 5"

或代替startsWith, 使用grep

do.call(paste, data[grep("^var_\\d+$", names(data))])

或与Reduce

Reduce(paste, data[startsWith(names(data), 'var')])
#[1] "1 1 1" "2 2 2" "3 3 3" "4 4 4" "5 5 5"

另一种选择是apply,但它会很慢

apply(data[startsWith(names(data), 'var')], 1, paste, collapse= ' ')
#[1] "1 1 1" "2 2 2" "3 3 3" "4 4 4" "5 5 5"

推荐阅读