繁体   English   中英

如何在变异 function 中获取列名

[英]how to get column names in mutate function

每个人。 我有一个问题,在 iris 数据集中,对于每一行,我想获取值>1 的列名。 然后将它们组合起来,预期的结果是这样的: SL&SW&PL。 SL&SW&PL&PW...

library(tidyverse)
data("iris")
colnames(iris)[1:4] <- c("SL","SW","PL","PW") # simplify the colnames
for (i in 1:nrow(iris)) {
  row_i <- iris[i,1:4]
  iris$new_var[i] <- names(row_i)[row_i>2] %>% paste0(.,collapse = "&")
  }

这是new_var的一些示例,这是我预期的结果

> iris$new_var[c(1,30,60,90,120)]
[1] "SL&SW"    "SL&SW"    "SL&SW&PL" "SL&SW&PL" "SL&SW&PL"

但是, mutate-function 并没有像我预期的那样工作。

fournames <- c("SL","SW","PL","PW")
iris %>% mutate(new_var=paste0(fournames[(SL:PW)>2],collapse = "&"))

如何使用变异 function 重复 for 循环结果?

我用代码解决了这个问题:

iris %>% rowwise %>% mutate(new_var=str_c(names(iris)[1:4][c_across(1:4)>2],collapse = "&")) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM