我正在处理一个数据集,并希望在数据帧的行上应用带有两个参数的函数。我使用了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)
最佳答案
我只需转置 (t
) 并从 tibble
添加 %>% as_tibble()
(在 dplyr 中导出
) 到 maply
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)))
关于r - 将 mapply 的输出修改为数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46636945/