Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将函数应用于向量元素的随机样本_R - Fatal编程技术网

R 将函数应用于向量元素的随机样本

R 将函数应用于向量元素的随机样本,r,R,在过去的几天里,我一直在学习R,我想知道下面的问题是否能以比我的解决方案更好的方式解决(可能是更紧凑的代码) 问题:N(~1000)个数字元素的向量V需要按以下方式进行转换 随机选择M(~100)个元素 用f(x)替换每个这样的元素x 我的解决方案:for(样本(1:N,M)中的i)V[i]=f(V[i]) 编辑:函数f接受单个数值作为输入,也输出单个数值。比如:f这个怎么样 i <- sample(1:N, M) V[i] <- f(V[i]) i这取决于函数的类

在过去的几天里,我一直在学习R,我想知道下面的问题是否能以比我的解决方案更好的方式解决(可能是更紧凑的代码)

问题:N(~1000)个数字元素的向量V需要按以下方式进行转换

  • 随机选择M(~100)个元素
  • 用f(x)替换每个这样的元素x
我的解决方案:
for(样本(1:N,M)中的i)V[i]=f(V[i])

编辑:函数f接受单个数值作为输入,也输出单个数值。比如:
f这个怎么样

   i <- sample(1:N, M)
   V[i] <- f(V[i])

i这取决于函数的类型。如果
f
是矢量化的,则

V <- f(V)    #  V is a vector with random numbers

谢天谢地,在
R
中,大多数函数都是矢量化的,因此第一种方法会经常起作用。

Hi,你能发布函数吗?在原始问题中添加了函数定义。谢谢,正如我所认为的那样。您可以将
f
直接指向整个向量,或者像您的例子一样,指向其中的一部分。这是假设
f
是向量化的。谢谢,这是一个非常好的解决方案!我有一张表格“使用
[
订阅的摘要”从我面前开始,但是解决方案没有闪现。现在,我意识到这个想法是多么强大。:-)你也可以使用
vectorize
对你的函数进行矢量化,例如:使用
f@agstudy mmm非常有趣,谢谢。我认为重要的是要注意,它在
base
>parent.env(environment(f))
,因此2降低了全局环境的级别。在某些情况下,这可能会让您感到头疼,比如找不到变量:)
V <- sapply(V, f)