我正在通过Datacamp的R入门课程学习,但是我不明白为什么此代码有效:
# Define columns
columns <- c("trip_distance", "total_amount", "passenger_count")
# Create summary function
taxis_summary <- function(col, data = taxis) {
c(
mean = mean(data[[col]]),
sd = sd(data[[col]]),
quantile(data[[col]], c(0.25, 0.5, 0.75))
)
}
# Use sapply to summarize columns
sapply(columns, taxis_summary)
但是此代码抛出:
未知或未初始化的列:“ col”。参数不是数字或 逻辑:返回NA
# Define columns
columns <- c("trip_distance", "total_amount", "passenger_count")
# Create summary function
taxis_summary <- function(col, data = taxis) {
c(
mean = mean(data$col),
sd = sd(data$col),
quantile(data$col, c(0.25, 0.5, 0.75))
)
}
# Use sapply to summarize columns
sapply(columns, taxis_summary)
答案 0 :(得分:1)
有多种方法可以访问数据帧中的元素。这是R在查找您要查找的列名的方式方面的问题。
一种方法是datacamp使用data [[col]]显示的内容。另一个是$访问器,如data $ col。后者不替代动态函数中的变量。它正在寻找一列字面意义为“ col”的列,并且该错误报告它未找到这样的列。另一方面,通过数据营访问这些列的方式,它能够找到“ trip_distance”,“ total_amount”和“ passenger_count”。