将两个 data.frame 元素逐个元素划分为 0 个条目
Dividing two data.frame element by element with 0 entries
我有两个 data.frame
,我想将它们逐个元素地划分。如果后者有 0 个条目,则除法结果应该为 0。您对如何轻松实现它有什么建议吗?
这里 df1
除以 df2
得到 res
.
df1 <- data.frame(a=c(1,4,0),b=c(6,1,2),c=c(0,2,0))
df2 <- data.frame(a=c(0,2,0),b=c(2,1,0),c=c(1,2,6))
res <- data.frame(a=c(0,2,0),b=c(3,1,0),c=c(0,1,0))
我们将 'df1' 除以 'df2',然后 replace
将每列中的 'NaN' 和 'Inf' 值除以 0,方法是使用 lapply
.
res1 <- df1/df2
res1[] <- lapply(res1, function(x) replace(x, is.infinite(x)|is.nan(x), 0))
或者把'df1'、'df2'对应的列分开,替换Map
[=15中的'NaN'、'Inf' =]
data.frame(Map(function(x, y) {x1 <- x/y
ifelse(is.nan(x1)|is.infinite(x1), 0, x1)}, df1, df2))
我有两个 data.frame
,我想将它们逐个元素地划分。如果后者有 0 个条目,则除法结果应该为 0。您对如何轻松实现它有什么建议吗?
这里 df1
除以 df2
得到 res
.
df1 <- data.frame(a=c(1,4,0),b=c(6,1,2),c=c(0,2,0))
df2 <- data.frame(a=c(0,2,0),b=c(2,1,0),c=c(1,2,6))
res <- data.frame(a=c(0,2,0),b=c(3,1,0),c=c(0,1,0))
我们将 'df1' 除以 'df2',然后 replace
将每列中的 'NaN' 和 'Inf' 值除以 0,方法是使用 lapply
.
res1 <- df1/df2
res1[] <- lapply(res1, function(x) replace(x, is.infinite(x)|is.nan(x), 0))
或者把'df1'、'df2'对应的列分开,替换Map
[=15中的'NaN'、'Inf' =]
data.frame(Map(function(x, y) {x1 <- x/y
ifelse(is.nan(x1)|is.infinite(x1), 0, x1)}, df1, df2))