将mapply的输出修改为数据帧

时间:2017-10-08 23:07:17

标签: r

我正在处理一个数据集,并希望在数据帧的行上应用一个带有两个参数的函数。我用mapply得到了结果。但我想要的是输出也是一个有两列的数据帧。我如何在R中执行此操作。这是我在模拟数据上的功能

set.seed(10)

n=100
x<-rnorm(n)
 e<-rnorm(n,0,2)
 y=0.5+2*x+e

df<-as.data.frame(cbind(y,x))
a<- 0.293
b<- 1.880 
s<-1.945
invssq<-1/(s^2)

sf<-function(x,y){
  sc<-invssq*(y-a-(b*x))%*% matrix(c(1,x),nrow=1,ncol=2)
  return(sc)
}

csf<-mapply(sf,df$x,df$y)

1 个答案:

答案 0 :(得分:2)

我只需转置( for(j=0; j<LOP.size(); j++){ if(!(str.equals(LOP.get(j)))){ LOP.add(str);} } )并将t %>% as_tibble()中的tibble添加到dplyr中导出到mapply

的末尾
csf <- t(mapply(sf, df$x, df$y)) %>% as_tibble()

# A tibble: 100 x 2
           V1           V2
        <dbl>        <dbl>
 1 -0.3474360 -0.006513095
 2  0.2705878 -0.049856495
 3 -0.5385760  0.738565694
 4  0.4119052 -0.246800319
 5 -0.2707042 -0.079734592
 6  0.3648204  0.142204908
 7  0.3658459 -0.441969730
 8 -0.8333920  0.303084690
 9  0.5466882 -0.889282805
10  0.6429061 -0.164891522

如果你想留在基地,你可以用以下代替。

csf <- as.data.frame(t(mapply(sf, df$x, df$y)))