Regex R:使用通配符从数据框中选择列

Regex R:使用通配符从数据框中选择列,regex,r,vector,dataframe,concat,Regex,R,Vector,Dataframe,Concat,在R中,我遇到了一个关于使用通配符连接数据帧列的特定问题。也许我找错了。然而,我还没有找到匹配的答案 我的问题是: 我有一个数据帧df,其中每列代表一个用户(U1、U2、U3),例如: 然而,我的用户数量很大,并且随着时间的推移而变化。因此,我寻找一种优雅的动态方式来连接列,例如 > c(df$U*) 不幸的是,这似乎不起作用。我使用了grep和正则表达式,但无法使其工作。当然,我可以使用For循环编程我自己的cat函数,但我认为有更好的方法。我就是找不到。也许我只是瞎了。希望您能提供帮

在R中,我遇到了一个关于使用通配符连接数据帧列的特定问题。也许我找错了。然而,我还没有找到匹配的答案

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

然而,我的用户数量很大,并且随着时间的推移而变化。因此,我寻找一种优雅的动态方式来连接列,例如

> c(df$U*)

不幸的是,这似乎不起作用。我使用了grep和正则表达式,但无法使其工作。当然,我可以使用For循环编程我自己的cat函数,但我认为有更好的方法。我就是找不到。也许我只是瞎了。希望您能提供帮助。

首先将数据帧强制为矩阵:

as.vector(as.matrix(df))
使用括号
[
选择名称与特定表达式匹配的列:

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

sub\U df很好,这适用于最简单的示例,如果他们在
df
中也有vars
“V1”、“cats”
等,会怎么样?他们需要一种方法来选择所有
U(n)
columns@krlmlr感谢您的建议,但正如@thelatemail所指出的,这不起作用,因为我的原始文件有
U(1)-U(x),V(1)-V(y),W列(1)-W(z)< /代码>,我想把u(x)转换成向量a、v(1)到v(y)到向量b中。@深潜水-你可能还想考虑<代码>整形< <代码>和<代码>堆栈函数和它们的同名词在<代码> DPLYR 和<代码>数据>表< /代码> @ KRLMLR。“U.*,colnames(df)),drop=FALSE])
,即我刚刚合并了您的建议。干杯!您想连接所有列还是仅连接一些列?即以U开头的列??可能只是取消列出数据。
取消列出(df[grepl(^U),names(df)),use.names=FALSE)
as.vector(as.matrix(df))
df[, grep("U.*", colnames(df)), drop = FALSE]
sub_df <- df[, grep(pattern ='^U.*', names(df))]    

stack(df)$values