is.null 函数不识别 NULL 值
is.null function does not identify NULL values
我想计算总资产的对数,如果总资产元素本身为0,我希望r将结果设置为NULL。否则,r会显示-Inf作为结果。
我已尝试按以下方式解决此问题:
at <- c(0.028, 0, 0, 0, 0, 0)
name <- c("comp 1","comp2", "comp3", "comp4", "comp5", "comp6")
df <- as.data.frame(cbind(name, at))
df$log_at <- ifelse(is.null(at), 0, log(at))
但是,如果您 运行 这行代码,则带有 log(assets) 的第 2 列将在数据框的每一行中显示 -3.575551 而不是 0,用于总计的 NULL 值资产。另外,我想知道总资产列中有多少个 NULL 值,但是:
sum(is.null(df$at))
会给我 0,所以我想知道为什么 r 不识别 Null 值,因为总资产列中的值都是数字。
我知道,我可以使用以下替代方法,因为总资产的数量相当大,但我想知道为什么上面的代码不起作用。
df$at <- as.numeric(df$at)
df$log_at <- log(df$at + 1)
希望有人能帮帮我!
NULL
不是 0
。检查:
is.null(df$at)
[1] FALSE
因此,如果您想使用 ifelse
转换 at
,那么它应该是:
df$log_at <- ifelse(at == 0, 0, log(at))
同样,要找出 at
与 0
的频率:
sum(df$at == 0)
我想计算总资产的对数,如果总资产元素本身为0,我希望r将结果设置为NULL。否则,r会显示-Inf作为结果。 我已尝试按以下方式解决此问题:
at <- c(0.028, 0, 0, 0, 0, 0)
name <- c("comp 1","comp2", "comp3", "comp4", "comp5", "comp6")
df <- as.data.frame(cbind(name, at))
df$log_at <- ifelse(is.null(at), 0, log(at))
但是,如果您 运行 这行代码,则带有 log(assets) 的第 2 列将在数据框的每一行中显示 -3.575551 而不是 0,用于总计的 NULL 值资产。另外,我想知道总资产列中有多少个 NULL 值,但是:
sum(is.null(df$at))
会给我 0,所以我想知道为什么 r 不识别 Null 值,因为总资产列中的值都是数字。
我知道,我可以使用以下替代方法,因为总资产的数量相当大,但我想知道为什么上面的代码不起作用。
df$at <- as.numeric(df$at)
df$log_at <- log(df$at + 1)
希望有人能帮帮我!
NULL
不是 0
。检查:
is.null(df$at)
[1] FALSE
因此,如果您想使用 ifelse
转换 at
,那么它应该是:
df$log_at <- ifelse(at == 0, 0, log(at))
同样,要找出 at
与 0
的频率:
sum(df$at == 0)