R 创建替换值的函数,其中n<;5,随机数介于1和4之间(整数)
我对R很陌生,遇到了一个我自己解决不了的问题。这应该相当容易 我的目标是编写一个通用函数来处理dataframe df中的列n。我希望它形成一个简单的任务,对于每一行,当n<5时,它应该用1到4之间的随机数替换该值R 创建替换值的函数,其中n<;5,随机数介于1和4之间(整数),r,dataframe,replace,R,Dataframe,Replace,我对R很陌生,遇到了一个我自己解决不了的问题。这应该相当容易 我的目标是编写一个通用函数来处理dataframe df中的列n。我希望它形成一个简单的任务,对于每一行,当n
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函数在此上下文中做什么?@Henriksample()
第二个参数是size
,它是要生成的随机向量的大小i1
是由TRUE-FALSE-TRUE-TRUE…
值组成的逻辑向量。在逻辑向量上调用sum
相当于计算其中TRUE
值的个数(FALSE
为0
,TRUE
为1
)。因此,对i1
求和,您可以找到dat[[col]]
中<5
的值的数量,这样您就可以告诉sample()
您希望它为您生成多少个[1,4]
中的随机值。@Henrik正如乌图邦所建议的那样,sum
仅用于计算小于5的元素数量。