使用if条件将log和log1p应用于多个列

时间:2017-12-29 01:39:04

标签: r for-loop if-statement logging

我有一个数据框,我需要计算所有大于0的数字的log和log1p的数字等于0.我的数据框称为 tcPainelLog ,就像这样( str < / strong>来自第6:8栏:

$ IDD:  num  0.04 0.06 0.07 0.72 0.52 ...
$ Soil: num  0.25 0.22 0.16 0.00 0.00 ...
$ QAI:  num  0.00 0.50 0.00 0.71 0.26 ...

因此,我想需要将 ifelse 语句与 log 连接起来log1p 功能。但是,我尝试了几种不同的方法,但没有一种方法成功。例如:

tcPainelLog <- tcPainel
cols <- names(tcPainelLog[,6:17]) # These are the columns I need to calculate

tcPainelLog$IDD   <- ifelse(X = tcPainelLog$IDD>0, log(X), log1p(X))

tcPainelLog[cols] <- lapply(tcPainelLog[cols], function(x) ifelse((x > 0), log(x), log1p(x)))

tcPainelLog[cols] <- if(tcPainelLog[,cols] > 0) log(.) else log1p(.)

我无法执行它,我将不胜感激任何帮助。我真的很抱歉,有一个解释,我搜索了很多单词,但我没有找到它。

最好的问候。

0 个答案:

没有答案