R 创建替换值的函数,其中n<;5,随机数介于1和4之间(整数)

R 创建替换值的函数,其中n<;5,随机数介于1和4之间(整数),r,dataframe,replace,R,Dataframe,Replace,我对R很陌生,遇到了一个我自己解决不了的问题。这应该相当容易 我的目标是编写一个通用函数来处理dataframe df中的列n。我希望它形成一个简单的任务,对于每一行,当n

我对R很陌生,遇到了一个我自己解决不了的问题。这应该相当容易

我的目标是编写一个通用函数来处理dataframe df中的列n。我希望它形成一个简单的任务,对于每一行,当n<5时,它应该用1到4之间的随机数替换该值

df <- data.frame(n= 1:10, y = letters[1:10],
                 stringsAsFactors = FALSE)

df一种方法是基于列创建一个逻辑索引,根据索引对列进行子集划分,并分配
sample
d值

f1 <- function(dat, col) {
      i1 <- dat[[col]] < 5
      dat[[col]][i1] <- sample(1:4, sum(i1), replace = TRUE)
      dat
  }

f1(df, "n")

f1您是否阅读了有关
替换的信息?这里有一些我没有的。但我现在会的。谢谢,谢谢,很酷。除了sum(i1)之外,我什么都能理解。sum函数在此上下文中做什么?@Henrik
sample()
第二个参数是
size
,它是要生成的随机向量的大小
i1
是由
TRUE-FALSE-TRUE-TRUE…
值组成的逻辑向量。在逻辑向量上调用
sum
相当于计算其中
TRUE
值的个数(
FALSE
0
TRUE
1
)。因此,对
i1
求和,您可以找到
dat[[col]]
<5
的值的数量,这样您就可以告诉
sample()
您希望它为您生成多少个
[1,4]
中的随机值。@Henrik正如乌图邦所建议的那样,
sum
仅用于计算小于5的元素数量。