将列添加到dataframe,dataframe是以前列中rnorm的sd

将列添加到dataframe,dataframe是以前列中rnorm的sd,r,function,loops,apply,R,Function,Loops,Apply,我有一个两列的数据框 set.seed(120) df <- data.frame(m1 = runif(500,1,30),n1 = round(runif(500,10,25),0)) 但这是行不通的。任何指点都将不胜感激 非常感谢,, Matt您的数据帧输入看起来像: # > head(df) # m1 n1 # 1 12.365323 15 # 2 4.654487 15 # 3 10.993779 24 # 4 24.069388 22 # 5 6.

我有一个两列的数据框

set.seed(120)
df <- data.frame(m1 = runif(500,1,30),n1 = round(runif(500,10,25),0))
但这是行不通的。任何指点都将不胜感激

非常感谢,,
Matt

您的数据帧输入看起来像:

# > head(df)
#          m1 n1
# 1 12.365323 15
# 2  4.654487 15
# 3 10.993779 24
# 4 24.069388 22
# 5  6.684450 18
# 6 15.056766 16
我的意思是使用n1和m1列中每一行的值作为复制次数(n)和平均值

首先演示如何使用
应用

apply(df, 1, function(x) sd(rnorm(n = x[2], mean = x[1])))
mapply(function(x,y) sd(rnorm(n = x, mean = y)), df$n1, df$m1)
但更好的方法是使用
mappy

apply(df, 1, function(x) sd(rnorm(n = x[2], mean = x[1])))
mapply(function(x,y) sd(rnorm(n = x, mean = y)), df$n1, df$m1)
apply
是矩阵输入的理想选择;对于数据帧输入,类型转换的开销很大。

另一种选择

lapply(Map(rnorm,n=df$m1,mean=df$n1),sd)

谢谢-我的意思是使用n1列每行中的值作为复制次数(n),m1作为平均值。我想我没有意识到我也需要标准偏差(sd)来实现rnorm,所以我可能无法实现我的目标。