Q值。编写一个名为col_median()的函数,它接受一个参数df并返回列中值的向量。
col_median <- function(df) {
output <- vector("double", ncol(df))
for (i in seq_along(df)) {
output[[i]] <- median(df[[i]])
}
output
}
在处理此问题时,我使用的代码行不起作用。有人可以解释为什么吗? output [i]&lt; - median(df [i])
答案 0 :(得分:1)
双括号选择列表或data.frame中的单个元素(因为data.frame也是一个列表,因此列是元素)。在这里,我们正在分配每列“df”的中位数。到输出列表。我们正在定义list
&#39;输出&#39;,它应该是
col_median <- function(df) {
output <- vector("list", ncol(df))
for (i in seq_along(df)) {
output[[i]] <- median(df[[i]])
}
output
}
col_median(df) #this returns a `list` output
OP的函数返回vector
。
如果我们正在使用
output[i] <- median(df[i])
通过定义,
output <- vector("double", ncol(df))
<-
的lhs很好,但df[i]
会返回data.frame
而median
无效。{1}}相反,它应median(df[[i]])
将列提取为vector
。
set.seed(24)
df <- as.data.frame(matrix(sample(1:9, 10*5, replace=TRUE), ncol=5))