我是R的新手,我正在尝试将每个数据框列作为实例处理,以将每个实例作为数据框中的列返回:
conFun <- function(x){
t <- x[2]
c <- x[3:8]
c <- c[c != ""]
w <- c(t,c)
w <- paste(w, "H2", sep = "")
tre <- data[, w[1]]
con <- data[, w[-1]]
if(length(c) > 2){
mcon <- rowMeans(con)
}
else{
mcon <- con
}
tre2con <- as.data.frame(mcon-tre)
names(tre2con) <- paste("inst_", x[1], sep = "")
tre2con
}
res <- as.data.frame(apply(tre_con[1,], 1, conFun))
res
inst_1
2.27
-1.37
3.00
1.46
当我只调用res <- as.data.frame(apply(tre_con[1,], 1, conFun))
一行tre_con
数据框时,它工作正常。
但是当我调用res <- as.data.frame(apply(tre_con[3,], 1, conFun))
3行tre_con
时,它只返回最后一行的值,如下所示:
res
inst_3
5.12
1.34
4.50
2.36
而不是:
inst_1 inst_2 inst_3
2.27 9.22 5.12
-1.37 2.14 1.34
3 6.12 4.5
1.46 -1.36 2.36
我如何使用apply实现这一目标?或者我是否必须更改申请家庭功能?