gpt4 book ai didi

R如何在apply中实现if else而不是for循环

转载 作者:行者123 更新时间:2023-12-01 16:26:28 25 4
gpt4 key购买 nike

EX 数据:

Col1 Col2 
1 a
2 b
3 null
4 c

如何将 Col2 中所有 NULL 元素更改为某个预定义值。我的实际数据约为 250,000 行,因此 for 循环会花费太多时间。我正在考虑某种 apply/ddplyifelse 组合,但我似乎无法让它工作。

更具体地说,如何将 for 循环更改为更有效的循环

for(I in 1:n)
{
if(col2(I) == NULL)
col2(I) = x
else...nothing happens
}

最佳答案

您可以使用 ifelse 将值从 null 更改为 XXX

> dat <- read.table(h=T, text = "Col1 Col2 
1 a
2 b
3 null
4 c")
> dat
# Col1 Col2
# 1 1 a
# 2 2 b
# 3 3 null
# 4 4 c
> dat$Col2 <- ifelse(dat$Col2 == 'null', 'XXX', dat$Col2)
> dat
# Col1 Col2
# 1 1 1
# 2 2 2
# 3 3 XXX
# 4 4 3

另一种可能更容易理解的方法是

dat[,'Col2'] <- with(dat, ifelse(Col2 == 'null', 'XXX', Col2))

此外,如果您正在处理因素并且想要更改级别的名称,

> levels(dat$Col2)
## [1] "a" "b" "c" "null"
> levels(dat$Col2)[4] <- "XXX"
> levels(dat$Col2)
## [1] "a" "b" "c" "XXX"

关于R如何在apply中实现if else而不是for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23638136/

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