【发布时间】:2022-06-29 23:31:27
【问题描述】:
我有一个 data.frame,我想根据另一列的模式添加一个额外的列,但数字列表的长度不相等。
class(mylist)
[1] "numeric"
mylist
[1] 90 100 97 100 93 100 90 100 100 100 100 100 100 100 96 100 100 100 100 100
这是我的data.frame,我只是展示了一部分
df[16:26,]
# A tibble: 11 × 9
parent node branch.length label isTip x y branch angle
<int> <int> <dbl> <chr> <lgl> <dbl> <dbl> <dbl> <dbl>
1 30 16 0.0000117 sample-59 TRUE 0.0213 15 0.0213 257.
2 39 17 0.0000179 sample-62 TRUE 0.0213 4 0.0213 68.6
3 32 18 0.0000212 sample-63 TRUE 0.0213 3 0.0213 51.4
4 40 19 0.0000147 sample-68 TRUE 0.0213 5 0.0213 85.7
5 40 20 0.0000147 sample-69 TRUE 0.0213 6 0.0213 103.
6 28 21 0.00630 sample-5 TRUE 0.0213 11 0.0181 189.
7 22 22 0 NA FALSE 0 8.20 0 140.
8 22 23 0.0143 NA FALSE 0.0143 13.9 0.00715 239.
9 22 24 0.0129 NA FALSE 0.0129 2.47 0.00645 42.3
10 24 25 0.000115 NA FALSE 0.0130 3.94 0.0130 67.5
11 25 26 0.00241 NA FALSE 0.0154 5.88 0.0142 101.
所以,我想将 mylist 添加到数据框的末尾,但仅限于那些在 isTip 列中为 FALSE 的行。
我通常这样做:
过滤器
dfisTip <- filter(df, isTip == FALSE)
将列表添加为列 (btp)
dfisTip$btp <- mylist
并加入数据框
df <- left_join(df, dfisTip)
Joining, by = c("parent", "node", "branch.length", "label", "isTip", "x", "y", "branch", "angle")
df[16:26, ]
# A tibble: 11 × 10
parent node branch.length label isTip x y branch angle btp
<int> <int> <dbl> <chr> <lgl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 30 16 0.0000117 sample-59 TRUE 0.0213 15 0.0213 257. NA
2 39 17 0.0000179 sample-62 TRUE 0.0213 4 0.0213 68.6 NA
3 32 18 0.0000212 sample-63 TRUE 0.0213 3 0.0213 51.4 NA
4 40 19 0.0000147 sample-68 TRUE 0.0213 5 0.0213 85.7 NA
5 40 20 0.0000147 sample-69 TRUE 0.0213 6 0.0213 103. NA
6 28 21 0.00630 sample-5 TRUE 0.0213 11 0.0181 189. NA
7 22 22 0 NA FALSE 0 8.20 0 140. 90
8 22 23 0.0143 NA FALSE 0.0143 13.9 0.00715 239. 100
9 22 24 0.0129 NA FALSE 0.0129 2.47 0.00645 42.3 97
10 24 25 0.000115 NA FALSE 0.0130 3.94 0.0130 67.5 100
11 25 26 0.00241 NA FALSE 0.0154 5.88 0.0142 101. 93
isTip 列中为 TRUE 的行在 btp 列中为 NA,FALSE 为编号!!
我只是想知道是否还有其他简单的方法可以做到这一点????
谢谢!!!
【问题讨论】:
-
我强烈建议您不要将常规原子向量称为“列表”。
list是它自己的类,调用非列表列表会造成混乱。