我使用for循环(这很好地工作),用NA来随机地替换数据集的每一行中的两个值(该值的索引是随机变化的在每一行)。
现在我想用apply()来做同样的事情。
我想这个代码(如到处都返回NA很多其他的事情):R Apply()函数,而不是需要索引值的循环
my_fun<-function(x){if (j %in% sample(1:ncol(y),2)) {x[j]<-NA}}
apply(y,1,my_fun)
但它不工作(它不会做任何改变初始数据集)。
问题是找不到对象j
。 j应该是列的编号。 有人有想法吗?
你必须从你的函数返回'x'。在一个函数调用中,参数被赋值给函数per **按值调用** – jogo
谢谢,但是这里的问题是没有找到对象j –
y是什么对象?请使用'dput()'来显示您的数据!如果'y'是一个矩阵(或一个data.frame),那么'apply(y,1,my_fun)'将逐行发送到你的函数'my_fun'。因此,在函数my_fun中,对象'x'是一个向量(即来自'y'的一行)。 – jogo