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
希望这对你有用。您可以先根据需要对某些列进行子集化。
我在 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
希望这对你有用。您可以先根据需要对某些列进行子集化。