【发布时间】:2012-06-30 15:41:47
【问题描述】:
我正在用更快的应用函数替换所有循环。我在使函数依赖于上一列时遇到问题。
目前,我需要根据考试成绩分配一个成绩,这可以使用
data <- matrix(runif(100),20,5)
colnames(data) <- letters[1:5]
sapply(colnames(data),function(x){
ifelse((data[,x] <= 0 & data[,x] < 0.50),'C',
ifelse((data[,x] >= 0.50 & data[,x] < 0.70) ,'B','A'))})
但是,是否可以继续使用 apply 函数并扩展代码,以便无论返回“C”的列如何,该列右侧的所有后续成绩都替换为该行中的“C” .
谢谢一百万
R.
【问题讨论】:
-
apply系列命令并不总是更快。此外,如果您更好地描述您想要什么,我们可能会提供帮助。请告诉我们您的意图,而不仅仅是转储一些我们必须解析的代码(这可能是也可能不是您真正想要的!) -
抱歉,我正在为我的设施中的大学生汇总成绩。我需要拿数字成绩并将它们转换为字母,分数在 40-50 = D、50-60 = C 之间,依此类推。上面的代码可以解决这个问题。对于课程的持续评估部分,如果学生低于某个成绩,学生将需要重复 - 无论后续的 CA 成绩如何。我目前在一个循环中执行此操作,这可行,但我认为使用 apply 函数可能会更干净、更快捷。谢谢你的帮助,R。