将列值转换为新值的R函数不起作用

将列值转换为新值的R函数不起作用,r,R,我编写了一个函数,将每列中不为NA的值更改为一个新值。以下示例说明了该问题: df <- data.frame(A=c(1,NA,1,1,NA), B=c(NA,1,NA,1,NA), C=c(1,NA,1,NA,1)) tha列的值保持不变。 为什么此功能不能按预期工作?您有 d[[v]][!is.na(d[[v]])] <- 0 编辑::您只是缺少了返回(d)语句。以下是一些基本的R解决方案: 一: 二: 三: data.f

我编写了一个函数,将每列中不为NA的值更改为一个新值。以下示例说明了该问题:

df <- data.frame(A=c(1,NA,1,1,NA),
             B=c(NA,1,NA,1,NA),
             C=c(1,NA,1,NA,1))
tha列的值保持不变。 为什么此功能不能按预期工作?

您有

d[[v]][!is.na(d[[v]])] <- 0

编辑::您只是缺少了返回(d)语句。

以下是一些基本的R解决方案:

一:

二:

三:

data.frame(lapply(df, pmin, 0))

该函数在data.frame的本地副本上运行。如果要更改原始df,应返回该值,然后将其分配回原始df<代码>坎比奥太棒了!它起作用了。哦!这就是我略读的结果。
d[[v]][!is.na(d[[v]])] <- 0
cambio <- function(d,v){
  d[[v]][is.na(d[[v]])] <- 0
  return(d)
}
replace(df, df == 1, 0)
replace(df, !is.na(df), 0)
data.frame(lapply(df, pmin, 0))