gpt4 book ai didi

R:仅在没有类型强制的情况下对字符列应用函数

转载 作者:行者123 更新时间:2023-12-02 06:28:50 25 4
gpt4 key购买 nike

我有一个包含许多列的数据框。这些列的类型不同:有些是数字,有些是字符等。这是一个小例子,我们只有 3 个变量和 2 种类型:

# Generate data
dat <- data.frame(x = c("1","2","3"),
y = c(1.0,2.5,3.3),
z = c(1,2,3),
stringsAsFactors = FALSE)

我想用空格替换值 3,但仅限于字符列。这是我当前的代码:

out <- as.data.frame(lapply(dat, function(x) { 
ifelse(is.character(x),
gsub("3", " ", x),
x)}),
stringsAsFactors = FALSE)

问题是 ifelse() 函数忽略了 y 和 z 是数字,而且它似乎也将数字变量强制转换为字符。

想法是提取字符列,对它们进行 gsub(),然后将它们绑定(bind)回原始数据框。但是,这会更改列的顺序。任何解决方案的关键是我不需要按名称指定变量,而只需按类型。

最佳答案

也可以使用 dplyr 简单地做到这一点:

# Load package
library(dplyr)

# Create data
dat <- data.frame(x = c("1","2","3"),
y = c(1.0,2.5,3.3),
z = c(1,2,3),
stringsAsFactors = FALSE)

# Replace 3's with spaces for character columns
dat <- dat %>% mutate_if(is.character, function(x) gsub(pattern = "3", " ", x))

关于R:仅在没有类型强制的情况下对字符列应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46752676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com