使用tidyverse变异特定列

使用tidyverse变异特定列,r,dplyr,tidyverse,lapply,wrangle,R,Dplyr,Tidyverse,Lapply,Wrangle,快速问题:有人能告诉我如何在dplyr语法中执行以下操作吗 p4[,1:5] <- lapply(p4[,1:5] , factor) p4[,1:5]%突变(作为因子) 但由于select函数,这会删除所有其他列。另外,在这里,mutate_if并没有真正的帮助,因为我还有其他col,它们是我不想改变的字符 非常感谢。在许多列上应用函数的一种方法是dplyr::cross()函数 我没有看到示例数据集,因此我创建了一个自己的数据集 library(dplyr) data <-

快速问题:有人能告诉我如何在dplyr语法中执行以下操作吗

p4[,1:5] <- lapply(p4[,1:5] , factor)
p4[,1:5]%突变(作为因子)
但由于select函数,这会删除所有其他列。另外,在这里,mutate_if并没有真正的帮助,因为我还有其他col,它们是我不想改变的字符


非常感谢。

在许多列上应用函数的一种方法是
dplyr::cross()
函数

我没有看到示例数据集,因此我创建了一个自己的数据集

library(dplyr)
data <- data.frame(
  stringsAsFactors = FALSE,
              col1 = c("apple", "pear"),
              col2 = c("wood", "fire"),
              col3 = c("cup", "plate"),
              col4 = c("pen", "pencil"),
              col5 = c("money", "coins")
)

data %>% 
  mutate(across(.cols = 1:5, .fns = factor)) %>% 
  str()
#> 'data.frame':    2 obs. of  5 variables:
#>  $ col1: Factor w/ 2 levels "apple","pear": 1 2
#>  $ col2: Factor w/ 2 levels "fire","wood": 2 1
#>  $ col3: Factor w/ 2 levels "cup","plate": 1 2
#>  $ col4: Factor w/ 2 levels "pen","pencil": 1 2
#>  $ col5: Factor w/ 2 levels "coins","money": 2 1
库(dplyr)
数据%
突变(跨越(.cols=1:5,.fns=factor))%>%
str()
#>“data.frame”:2个obs。共有5个变量:
#>$col1:系数w/2级“苹果”、“梨”:12
#>$col2:系数w/2级“火”,“木”:2 1
#>$col3:系数w/2级“杯”、“盘”:1 2
#>$col4:系数w/2级“笔”、“铅笔”:1 2
#>$col5:系数w/2级“硬币”,“货币”:2 1
library(dplyr)
data <- data.frame(
  stringsAsFactors = FALSE,
              col1 = c("apple", "pear"),
              col2 = c("wood", "fire"),
              col3 = c("cup", "plate"),
              col4 = c("pen", "pencil"),
              col5 = c("money", "coins")
)

data %>% 
  mutate(across(.cols = 1:5, .fns = factor)) %>% 
  str()
#> 'data.frame':    2 obs. of  5 variables:
#>  $ col1: Factor w/ 2 levels "apple","pear": 1 2
#>  $ col2: Factor w/ 2 levels "fire","wood": 2 1
#>  $ col3: Factor w/ 2 levels "cup","plate": 1 2
#>  $ col4: Factor w/ 2 levels "pen","pencil": 1 2
#>  $ col5: Factor w/ 2 levels "coins","money": 2 1