R 使用apply函数处理数据
我有以下数据:R 使用apply函数处理数据,r,loops,apply,data-manipulation,R,Loops,Apply,Data Manipulation,我有以下数据: set.seed(20) pay1<-sample(1:10,10,replace=TRUE) pay2<-sample(1:10,10,replace=TRUE) pay3<-sample(1:10,10,replace=TRUE) gamematrix<-cbind(pay1,pay2,pay3) gamematrix<-data.frame(gamematrix) gamematrix pay1 pay2 pay3 1 9
set.seed(20)
pay1<-sample(1:10,10,replace=TRUE)
pay2<-sample(1:10,10,replace=TRUE)
pay3<-sample(1:10,10,replace=TRUE)
gamematrix<-cbind(pay1,pay2,pay3)
gamematrix<-data.frame(gamematrix)
gamematrix
pay1 pay2 pay3
1 9 8 5
2 8 8 1
3 3 1 5
4 6 8 1
5 10 2 3
6 10 5 1
7 1 4 10
8 1 2 10
9 4 3 1
10 4 9 7
我知道如何使用嵌套循环(这里介绍)来解决它。
但是有没有一种更快更优雅的方法,比如使用apply函数
谢谢 这里有一个使用
apply
的解决方案:
myweights <- function(x,w) {
y1 <- 0
y2 <- w*y1+w*x[1]
y3 <- w*y2+w*x[2]
return(c(y1,y2,y3))
}
t(apply(gamematrix, 1, myweights, w=w))
下面是一个使用
apply
的解决方案:
myweights <- function(x,w) {
y1 <- 0
y2 <- w*y1+w*x[1]
y3 <- w*y2+w*x[2]
return(c(y1,y2,y3))
}
t(apply(gamematrix, 1, myweights, w=w))
没有循环和应用:
x <- gamematrix
lag1 <- function(x) cbind(0, x[, -ncol(x)]) # function to lag data.frame
p1 <- lag1(x) * (1-w)
result <- p1 + lag1(p1) * w
result
# 0 pay1 pay2
# 1 0 4.5 6.25
# 2 0 4.0 6.00
# 3 0 1.5 1.25
# 4 0 3.0 5.50
# 5 0 5.0 3.50
# 6 0 5.0 5.00
# 7 0 0.5 2.25
# 8 0 0.5 1.25
# 9 0 2.0 2.50
# 10 0 2.0 5.50
x无循环并应用:
x <- gamematrix
lag1 <- function(x) cbind(0, x[, -ncol(x)]) # function to lag data.frame
p1 <- lag1(x) * (1-w)
result <- p1 + lag1(p1) * w
result
# 0 pay1 pay2
# 1 0 4.5 6.25
# 2 0 4.0 6.00
# 3 0 1.5 1.25
# 4 0 3.0 5.50
# 5 0 5.0 3.50
# 6 0 5.0 5.00
# 7 0 0.5 2.25
# 8 0 0.5 1.25
# 9 0 2.0 2.50
# 10 0 2.0 5.50
x
x <- gamematrix
lag1 <- function(x) cbind(0, x[, -ncol(x)]) # function to lag data.frame
p1 <- lag1(x) * (1-w)
result <- p1 + lag1(p1) * w
result
# 0 pay1 pay2
# 1 0 4.5 6.25
# 2 0 4.0 6.00
# 3 0 1.5 1.25
# 4 0 3.0 5.50
# 5 0 5.0 3.50
# 6 0 5.0 5.00
# 7 0 0.5 2.25
# 8 0 0.5 1.25
# 9 0 2.0 2.50
# 10 0 2.0 5.50