如何解决如何在for循环中包含dplyr :: mutate
我有一个数据框,其中包含一列各种字符和许多行,如下所示:
> clean_AA_df
clean_AA_fin
1 M
2 A
3 C
4 L
5 W
6 S
7 F
8 S
9 W
我想在此df中添加列,其中每一列中的字符都被迭代地向前移动一个位置。 df中的247行中的每一行都有一个新列。
我可以使用以下代码一次完成这一列:
clean_AA_df %>%
mutate(pep_1 = dplyr::lead(clean_AA_fin,n = 0)) %>%
mutate(pep_2 = dplyr::lead(clean_AA_fin,n = 1)) %>%
mutate(pep_3 = dplyr::lead(clean_AA_fin,n = 2))
返回:
clean_AA_fin pep_1 pep_2 pep_3
1 M M A C
2 A A C L
3 C C L W
4 L L W S
5 W W S F
6 S S F S
7 F F S W
8 S S W P
我尝试了以下内容及其变体,但是=符号引发了一些错误。
for (i in rownames(clean_AA_df)) {
mutate(pep_[i] = dplyr::lead(clean_AA_fin,n = i))
}
有什么建议吗?谢谢!
解决方法
使用!!
和:=
尝试一下。这里的代码:
library(dplyr)
#Code
vnames <- paste0('pep_',1:3)
values <- 0:(length(vnames)-1)
#Loop
for(i in 1:length(vnames))
{
var <- vnames[i]
df <- df %>% mutate(!!var:=lead(clean_AA_fin,n = values[i]))
}
输出:
clean_AA_fin pep_1 pep_2 pep_3
1 M M A C
2 A A C L
3 C C L W
4 L L W S
5 W W S F
6 S S F S
7 F F S W
8 S S W <NA>
9 W W <NA> <NA>
使用了一些数据:
#Data
df <- structure(list(clean_AA_fin = c("M","A","C","L","W","S","F","W")),class = "data.frame",row.names = c("1","2","3","4","5","6","7","8","9"))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。