R:使用通配符从数据框中连接列

R: Concat columns from data frame using wildcards

我在 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 循环并编写我自己的 cat 函数,但我认为有更好的方法。我只是没有找到它。也许我只是瞎了眼。希望能帮到你。

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

as.vector(as.matrix(df))

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

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

stack(df)$values 

希望这对你有用。您可以先根据需要对某些列进行子集化。