我有五个数据帧(a-f),每个数据帧都有一个'nq'列。我想找到nq列的最大值,最小值和平均值
classes <- c("a","b","c","d","e","f")
for (i in classes){
format(max(i$nq), scientific = TRUE)
format(min(i$nq), scientific = TRUE)
format(mean(i$nq), scientific = TRUE)
}
但代码无效。你能帮忙吗?
答案 0 :(得分:3)
您不能将字符值用作data.frame名称。值“a”与data.frame a
不同。
你可能不应该有一堆data.frames。您可能希望将它们全部放在列表中。然后你可以对它们进行讨论以获得结果。
mydata <- list(
a = data.frame(nq=runif(10)),
b = data.frame(nq=runif(10)),
c = data.frame(nq=runif(10)),
d = data.frame(nq=runif(10))
)
然后你可以做
lapply(mydata, function(x)
format(c(max(x$nq), min(x$nq), mean(x$nq)), scientific = TRUE)
)
一次获取所有值。
答案 1 :(得分:0)
它不起作用的原因是因为&#39; i&#39;是一个字符/字符串。正如Mr.Flick已经提到的,你必须把它变成一个列表。 或者,您可以编写get(i)$ nq而不是在循环中编写i $ nq。 get()函数将按名称在工作空间中搜索对象,它将返回对象本身。但是,这并不像将其列入列表并使用lapply那样干净。