【问题标题】:What is wrong with my pattern matching and replacement function我的模式匹配和替换功能有什么问题
【发布时间】:2023-04-04 22:09:01
【问题描述】:

我有一个数据框,其温度格式为 XX,X 而不是 XX.X。

我可以使用下面的代码成功更改它们...

df$tempMedian <- sub(",",".",df$tempMedian) df$tempMedian <- as.numeric(df$tempMedian)

我尝试编写以下函数来做同样的事情:

comma_to_point <- function(data, colname){ data$colname <- sub(",", ".", data$colname) data$colname <- as.numeric(data$colname) }

当我调用函数时:

comma_to_point(df, tempMedian)

我收到以下错误:

“`$tmp`, colname, value = character(0)) 中的错误: 替换有0行,数据有365"

我的数据框是 365 obs 长。

【问题讨论】:

    标签: r function dataframe


    【解决方案1】:

    试一试

    comma_to_point <- function(data, colname){
      data[[colname]] <- sub(",", ".", data[[colname]])
      data[[colname]] <- as.numeric(data[[colname]])
      return (data)
    }
    df = comma_to_point(df, "tempMedian")
    

    当使用变量var='my_column' 来引用data.frame 中的列时,您不能使用df$var,因为R 会认为var 是列的名称。相反,您可以使用df[[var]] 获取该列。

    【讨论】:

    • 那行不通。抛出此错误: comma_to_point(df, "tempMedian") 中的错误: (list) object cannot be coerced to type 'double'
    • 编辑应该工作,如果您仍有问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2018-02-19
    相关资源
    最近更新 更多