R定义函数,用于查看数字列并计算日志

时间:2019-07-18 00:02:13

标签: r function loops

我有一个包含10个变量的数据框。三个是因子,七个是数字。我想编写一个定义的函数,该函数可以查看每一列并确定它是否为数字;如果是数字,则计算日志。

2 个答案:

答案 0 :(得分:0)

这是使用dplyr软件包的一种简单方法-

your_df %>% 
  mutate_if(is.numeric, log)

根据注释,如果要保留原始变量并将日志添加为新变量-

your_df %>% 
  mutate_if(is.numeric, list(LG = ~log))

示例-

head(iris) %>% 
  mutate_if(is.numeric, list(LG = ~log))

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length_LG Sepal.Width_LG Petal.Length_LG Petal.Width_LG
1          5.1         3.5          1.4         0.2  setosa        1.629241       1.252763       0.3364722     -1.6094379
2          4.9         3.0          1.4         0.2  setosa        1.589235       1.098612       0.3364722     -1.6094379
3          4.7         3.2          1.3         0.2  setosa        1.547563       1.163151       0.2623643     -1.6094379
4          4.6         3.1          1.5         0.2  setosa        1.526056       1.131402       0.4054651     -1.6094379
5          5.0         3.6          1.4         0.2  setosa        1.609438       1.280934       0.3364722     -1.6094379
6          5.4         3.9          1.7         0.4  setosa        1.686399       1.360977       0.5306283     -0.9162907

答案 1 :(得分:0)

使用“ dplyr”软件包,您只能选择数字列并计算对数。在我的示例中,我使用了“ iris”数据集:

iris_1 <- as.data.frame(lapply(iris %>% select_if(is.numeric), log)) 

> head(iris_1)
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1     1.629241    1.252763    0.3364722  -1.6094379
2     1.589235    1.098612    0.3364722  -1.6094379
3     1.547563    1.163151    0.2623643  -1.6094379
4     1.526056    1.131402    0.4054651  -1.6094379
5     1.609438    1.280934    0.3364722  -1.6094379
6     1.686399    1.360977    0.5306283  -0.9162907