R对具有相同编号的多个列进行变异

R对具有相同编号的多个列进行变异,r,dplyr,R,Dplyr,假设我有三个专栏:专栏A,专栏B,专栏C 我想对三列中的每一列进行变异。问题是如果我做了类似的事情 mutate(columnA = columnA + runif(1, (-1/70), (1/70) ), columnB = columnB + runif(1, (-1/70), (1/70) ), columnC = columnC + runif(1, (-1/70), (1/70) ) 问题是,我想为所有三列生成相同的编号,但上面将创建3个不同的生成编号。

假设我有三个专栏:专栏A,专栏B,专栏C

我想对三列中的每一列进行变异。问题是如果我做了类似的事情

mutate(columnA = columnA + runif(1, (-1/70), (1/70) ),
       columnB = columnB + runif(1, (-1/70), (1/70) ),
       columnC = columnC + runif(1, (-1/70), (1/70) )
问题是,我想为所有三列生成相同的编号,但上面将创建3个不同的生成编号。
有人知道我如何将相同的runif应用于所有需要的列。

您可以先创建一个
noise
列,添加到
a、B、C列,然后删除它:

mutate(noise = runif(1, (-1/70), (1/70)),
       columnA = columnA + noise,
       columnB = columnB + noise,
       columnC = columnC + noise) %>% select(-noise)

df%
突变(噪声=运行IF(1,(-1/70),(1/70)),
A=A+噪声,B=B+噪声)%>%
选择(-noise)
#A B
#1 1.003914 2.003914
#2 2.003914 3.003914
#3 3.003914 4.003914

您可以先创建一个
噪波
列,将其添加到
a、B、C列,然后将其删除:

mutate(noise = runif(1, (-1/70), (1/70)),
       columnA = columnA + noise,
       columnB = columnB + noise,
       columnC = columnC + noise) %>% select(-noise)

df%
突变(噪声=运行IF(1,(-1/70),(1/70)),
A=A+噪声,B=B+噪声)%>%
选择(-noise)
#A B
#1 1.003914 2.003914
#2 2.003914 3.003914
#3 3.003914 4.003914

FWIW,更快更干净的基本R版本:

df <- data.frame(A = c(1,2,3), B = c(2,3,4))

FWIW,更快更干净的基本R版本:

df <- data.frame(A = c(1,2,3), B = c(2,3,4))

除非我误解了什么,否则只需创建一个变量并将其添加到数据中即可

r <- runif(1, -1/70, 1/70)
mutate_all(df, function(x) x + r)

r除非我误解了什么,否则只需创建一个变量并将其添加到数据中即可

r <- runif(1, -1/70, 1/70)
mutate_all(df, function(x) x + r)

r
noise
不需要进入数据帧。创建一个新变量。@Spacedman如果OP不想继续使用管道
%%>%%
,那么一个新变量肯定会起作用。创建一个这样的新列是个坏主意-假设数据已经有一个名为“noise”的列,您只是在它上面踩了一下。@Spacedman我想知道一个有意义的列被命名为
noise
;如果真的有一列名为
noise
,我们可以在这里把变量命名为更疯狂的东西,可能是
noise\uuuu
temp
。这只是一个演示。
噪声
不需要进入数据帧。创建一个新变量。@Spacedman如果OP不想继续使用管道
%%>%%
,那么一个新变量肯定会起作用。创建一个这样的新列是个坏主意-假设数据已经有一个名为“noise”的列,您只是在它上面踩了一下。@Spacedman我想知道一个有意义的列被命名为
noise
;如果真的有一列名为
noise
,我们可以在这里把变量命名为更疯狂的东西,可能是
noise\uuuu
temp
。这只是一个演示。或者有
df[]或者有
df[]