data $ colname和data [,“ colname”]之间的区别

问题描述

我正在尝试使用as.Date函数将字符列转换为日期列。当我输入as.Date(data$colname)时,它可以工作。但是,当我输入as.Date(data[,"colname"])时会返回

不知道如何将'data [,“ colname”]'转换为“ Date”类

  1. 为什么第二种选择不起作用?
  2. 如何更改第二个选项以使其起作用?

最后,我想在以列名作为参数的函数中使用as.Date。这样一来,我看不到如何使用$

谢谢!

我的数据示例:

structure(list(colname = structure(c(1014036051,1034089765,1237297478,1260283949,1274454601,1580486457.445,1581671766.241,1401445496,1279550892,1173094955),tzone = "UTC",class = c("POSIXct","POSIXt"))),row.names = c(NA,-10L),class = c("tbl_df","tbl","data.frame"))

解决方法

您可以将列名作为函数参数传递,并用df[[col]]进行引用:

df <- data.frame(a = c("2020-01-01","2020-02-01"),b = 4:5,stringsAsFactors = F)

class(df$a)
# [1] "character"

convert_to_date_type <- function(data,col) as.Date(data[[col]],"%Y-%m-%d")

df["date"] <- convert_to_date_type(df,"a")

class(df$date)
# [1] "Date"