R:使用通配符的数据框中的Concat列

时间:2016-01-22 00:41:30

标签: regex r vector dataframe concat

我在R中遇到一个特定的问题,围绕使用通配符连接数据框的列。也许我错了。但是我找不到匹配的答案。

这是我的问题: 我有一个数据框df,其中每列代表一个用户(U1,U2,U3),例如:

> df <-data.frame(U1=1:3, U2=4:6, U3=7:9)
> df
>  U1 U2 U3
1  1  4  7
2  2  5  8
3  3  6  9

我想将所有用户的值连接到单个向量中,就像使用c()函数一样,例如:

> c(df$U1, df$U2, df$U3)
[1] 1 2 3 4 5 6 7 8 9

但是,我的用户数量很大并且随着时间的推移而变化。所以,我寻找一种优雅的动态方式来连接诸如

之类的列
> c(df$U*)

不幸的是,这似乎不起作用。我玩grep和正则表达式,但无法让它工作。当然,我可以使用for-loop并编写自己的cat函数,但我认为有更好的方法。我只是找不到它。也许我只是瞎了。希望你能帮忙。

2 个答案:

答案 0 :(得分:0)

首先将数据框强制转换为矩阵:

as.vector(as.matrix(df))

使用方括号[选择名称与特定表达式匹配的列:

df[, grep("U.*", colnames(df)), drop = FALSE]

答案 1 :(得分:0)

sub_df <- df[, grep(pattern ='^U.*', names(df))]    

stack(df)$values 

希望这适合你。您可以根据需要首先对某些列进行分配。