根据两列的字符串长度选择行

use*_*877 4 select row r dataframe

我想选择一个数据框的行,其中 v3 列中字符串的长度等于 v4 列中字符串的长度。我的数据框 'df' 看起来像:

    v1  v2  v3  v4
1   456 .   C   T
2   462 .   C   T
3   497 .   C   T
4   499 .   GC  AC
5   499 .   GC  G
6   499 .   GC  CC
7   513 .   GCACA   GCA
8   513 .   GCACA   GCACACA
9   513 .   GCACA   ACACA
10  513 .   GCACA   GCACACACA
11  513 .   GCACA   GCACACACACA

12  513 .   GCACA   GACCACA
13  513 .   GCACA   G
14  521 .   ACN A
15  522 .   CNN C
Run Code Online (Sandbox Code Playgroud)

输出应该是:

v1  v2  v3  v4
1   456 .   C   T
2   462 .   C   T
3   497 .   C   T
4   499 .   GC  AC
9   513 .   GCACA   ACACA
Run Code Online (Sandbox Code Playgroud)

我试过了:
new_df = df[nchar(str_sub(df$v3))==nchar(str_sub(df$v4))]

flo*_*del 5

@agstudy 得到了最重要的部分。我要补充一点str_sub(从stringr我假设的包中)在这里没有做任何有用的事情。最后,您可以使用subset来避免重复使用df$. 所以你可以这样做:

df[nchar(df$v3) == nchar(df$v4), ]
Run Code Online (Sandbox Code Playgroud)

或者

subset(df, nchar(v3) == nchar(v4))
Run Code Online (Sandbox Code Playgroud)