将所有列从逻辑转换为 csv 中的字符

Clo*_*oud 3 csv r class dataframe

我正在尝试将所有在将 csv 导入字符时显示为逻辑的列转换为字符。

如果我调用每一列,这些代码如下所示,但我有 200 多列,所以它不可行。

library(stringi)
library(readr)
library(dplyr)

df <- read_csv("~/dataverified.csv", 
col_types = cols(
Innovation = col_character(), 
Tech = col_character(), 
Music = col_character()))
Run Code Online (Sandbox Code Playgroud)

这是一列的摘要 () 示例,下面是期望的输出

例如输入摘要

Innovation                                    
Mode:logical
TRUE:403
NA's 45600
Run Code Online (Sandbox Code Playgroud)

例如,每列的欲望输出摘要

Innovation
Length: 45900                                    
Class:character
Mode:character
Run Code Online (Sandbox Code Playgroud)

www*_*www 5

读取数据集后,我们可以使用包中的mutate_if函数。可以检查列是否与函数合乎逻辑。如果,我们就可以使用该函数。mutate_ifis.logicalTRUEas.character

# Load package
library(dplyr)

# Create example data frame
df <- data_frame(A = as.logical(c(1, 1, 0)),
                 B = as.logical(c(1, 0, 1)))

summary(df)
#     A               B          
# Mode :logical   Mode :logical  
# FALSE:1         FALSE:1        
# TRUE :2         TRUE :2

# Convert logical to character
df2 <- df %>%
  mutate_if(is.logical, as.character)

summary(df2)
#      A                  B            
# Length:3           Length:3          
# Class :character   Class :character  
# Mode  :character   Mode  :character  
Run Code Online (Sandbox Code Playgroud)

如果您确定所有列都应该是字符,则还可以考虑该mutate_all函数。

df2 <- df %>%
  mutate_all(funs(as.character(.)))
Run Code Online (Sandbox Code Playgroud)