我正在处理一个数据集,并希望在数据帧的行上应用一个带有两个参数的函数。我用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)
答案 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)))