data$colname 和 data["colname"] 的区别

Difference between data$colname and data[,"colname"]

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

do not know how to convert 'data[,"colname"]' to class “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"