【发布时间】:2014-04-29 03:32:48
【问题描述】:
这是我的小数据集,这是一个函数:
dat <- data.frame (
A1 = c("AA", "AA", "AA", "AA"),
B1 = c("BB", "BB", "AB", "AB"),
C1 = c("AB", "BB", "AA", "AB"))
功能
syfun <- function (x, y){
if(x == "AA" & y == "AA" | x == "BB" & y == "BB"){
sxy = 1
}
if(x == "AA" & y == "AB" | x == "AB" & y == "AA"){
sxy = 0.5
}
if (x == "AA" & y == "BB"| x == "BB" & y == "AA"){
sxy = 0
}
return(sxy)
}
out <- rep (NA, NROW(dat))
for (i in 1:NROW(dat)){
out[i] <- syfun (dat[i,1], dat[i,1])
}
mean(out)
1
在这里我要做的是应用具有相同变量(变量 A1)的第一列(变量 A)的函数并平均输出值。我想将此输出保存到矩阵的单元格中。
A1 和 B1 之间也是如此。
for (i in 1:NROW(dat)){
out[i] <- syfun (dat[i,1], dat[i,2])
}
mean(out)
0.25
现在类似于相关矩阵,我想保存变量之间所有可能的组合来制作一个矩阵。
A1 B1 C1
A1 1.0 0.25 0.5
B1 0.25 1.0 NA
C1 0.5 NA 1.0
编辑:不产生 NA 的更完整的功能
syfun <- function (x, y){
sxy <- NA
if(x == "AA" & y == "AA" | x == "BB" & y == "BB"){
sxy = 1
}
if(x == "AA" & y == "AB" | x == "AB" & y == "AA"){
sxy = 0.5
}
if (x == "AA" & y == "BB"| x == "BB" & y == "AA"){
sxy = 0
}
if (x == "BB" & y == "AB"| x == "AB" & y == "BB"){
sxy = 0.5
}
if(x == "AB" & y == "AB") {
sxy = 0.5
}
return(sxy)
}
【问题讨论】:
标签: r function variables matrix apply