2
考虑下面的数据框(“数据”):应用功能跨越编号变量R中
data <- data.frame(a1 = sample(10), b1 = rep(0,10), c1 = sample(10),
a2 = rep(0,10), b2 = sample(10), c2 = sample(10),
a3 = sample(10), b3 = sample(10), c3 = sample(10))
和一个功能,我创建进行计算依赖于三个条件:
calcs <- function(a, b, c){
if ((max(a) > 0) & (max(b)>0)){
maxa <- max(a)
maxb <- max(b)
maxc <- max(c)
calc = 75*c/maxc + 12.5*a/maxa + 12.5*b/maxb
}
else if ((max(a) > 0) & (max(b)==0)){
maxa <- max(a)
maxc <- max(c)
calc = 75*c/maxc + 25*a/maxa
}
else {
maxc <- max(c)
maxb <- max(b)
calc = 75*c/maxc + 25*b/maxb
}
}
我会喜欢将此功能应用于数据帧,循环显示编号变量(从1到3)而不是使用以下代码:
data$calc1 <- calcs(data$a1,data$b1,data$c1)
data$calc2 <- calcs(data$a2,data$b2,data$c2)
data$calc3 <- calcs(data$a3,data$b3,data$c3)
我已经看过其他地方,显然是一个简单的问题,但与各种'工具'文件列表,lapply等我不知道最好的行动方针。
非常感谢@akrun。对基础函数的精彩介绍,我可以在数据框中使用我的'用户创建函数'。老套。 – mkrasmus
@mkrasmus谢谢你的提示。你也可以勾选[here](http://stackoverflow.com/help/someone-answers) – akrun