我想选择数据帧的行,其中列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
输出应为:
v1 v2 v3 v4
1 456 . C T
2 462 . C T
3 497 . C T
4 499 . GC AC
9 513 . GCACA ACACA
我尝试过:
new_df = df[nchar(str_sub(df$v3))==nchar(str_sub(df$v4))]
答案 0 :(得分:3)
@agstudy得到了最重要的部分。我想补充说str_sub
(来自我假设的stringr
包)在这里没有做任何有用的事情。最后,您可以使用subset
来避免重复使用df$
。所以你可以这样做:
df[nchar(df$v3) == nchar(df$v4), ]
或
subset(df, nchar(v3) == nchar(v4))