自动从对象中撤消多个变量

3 r

这是我的情况.我有一个我用它创建的对象read.spss.

> a <- read.spss(...)
> attach(a)
Run Code Online (Sandbox Code Playgroud)

现在,在这个对象a中,我想提出一系列问题,这些问题遵循一系列问题编号:

> q3 <- data.frame(q3_1, q3_2, q3_4, ... q3_27)
Run Code Online (Sandbox Code Playgroud)

有没有办法自动化它,从而q3_将从原始对象开始的所有问题都提取到新的q3 data.frame

我试过使用这个paste功能无济于事.

> q3 <- data.frame(paste("q3_",1:27,sep=""))
Run Code Online (Sandbox Code Playgroud)

只返回data.frame带有粘贴序列的a.

理想情况下,我希望从一个问题开始,从一些问题开始qX_,因为某些价值观缺失或过时.

Dir*_*tel 5

其中的可能性是grep,match%in%.这是一个解决方案grep:

R> foo <- data.frame(q1_1=1:4, q1_2=11:14, q2_1=21:24, q2_2=31:34, q3_1=41:44, q3_2=51:54)
R> colnames(foo)
[1] "q1_1" "q1_2" "q2_1" "q2_2" "q3_1" "q3_2"
R> grep("q3_", colnames(foo))
[1] 5 6
R> q3 <- foo[, grep("q3_", colnames(foo))]
R> q3
  q3_1 q3_2
1   41   51
2   42   52
3   43   53
4   44   54
R> 
Run Code Online (Sandbox Code Playgroud)