gpt4 book ai didi

r - 通过将data.frame的列名传递给apply()或plyr函数来替换所选列中的值

转载 作者:行者123 更新时间:2023-12-02 05:38:41 29 4
gpt4 key购买 nike

假设我有一个date.frame像:

df <- data.frame(a=1:5, b=sample(1:5, 5, replace=TRUE), c=5:1)
df
a b c
1 1 4 5
2 2 3 4
3 3 5 3
4 4 2 2
5 5 1 1

我需要将所有 5替换为 NAb列中的 c,然后返回 df:
df
a b c
1 1 4 NA
2 2 3 4
3 3 NA 3
4 4 2 2
5 5 1 1

但是我想做一个通用的 apply()函数,而不是每个函数都使用 replace(),因为实际数据中实际上需要替换许多变量。假设我已经定义了一个变量列表:
var <- c("b", "c")

并提出类似:
df <- within(df, sapply(var, function(x) x <- replace(x, x==5, NA)))

但什么也没发生。我在想是否有办法通过将data.frame中的列名的可变列表传递到通用的 apply / plyr函数中(或其他完全不同的方法)来解决上述问题。谢谢〜

最佳答案

df <- data.frame(a=1:5, b=sample(1:5, 5, replace=TRUE), c=5:1)
df
var <- c("b","c")
df[,var] <- sapply(df[,var],function(x) ifelse(x==5,NA,x))
df

我发现ifelse表示法在这里更容易理解,但是大多数Rers可能会改用索引。

关于r - 通过将data.frame的列名传递给apply()或plyr函数来替换所选列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991046/

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