当前位置: 首页 > 知识库问答 >
问题:

两个等价命令在r中给出不同的返回

羊舌高明
2023-03-14

为什么以下两个命令不返回相同的输出?

x <- sample(0:1, 50, replace = TRUE, prob = c(0.5, 0.5))
  sum(x==1)

sample(0:1, 50, replace = TRUE, prob = c(0.5, 0.5)) %>%
  sum(.==1)

2命令中的第一个总是给我正确的答案(大约25左右),第二个命令返回一个太高的数字,比如52。我对这里的管道操作员理解错了什么?

共有1个答案

仲承福
2023-03-14

另一种方法是将逻辑操作移到sample()函数

sample(c(0:1) == TRUE, 
       size = 50, 
       replace = TRUE, 
       prob = c(0.5, 0.5)) %>%
  sum

你会问为什么--求和函数会求和它接收到的所有值,而不仅仅是第一个向量。当进行管道处理时,它将最后一步的输出转换为sum(...)中的第一个参数,因此,通过同时提供x==1,您提供了两个向量,实质上是表示sum(x,x==1)。例如,您可以在sum(c(1,1,1),c(1,1,1))中看到这一点(它返回6,将两个向量中的所有值求和),或者在您的代码中看到:

set.seed(1)
x <- sample(0:1, 
            size = 50, 
            replace = TRUE, 
            prob = c(0.5, 0.5))
sum(x, x==1)

set.seed(1)
sample(0:1, 
       size = 50, 
       replace = TRUE, 
       prob = c(0.5, 0.5)) %>%
  sum(x==1)

此外,如果x<-c(1,0,1,0,1,1),则sum(x,x==1)x%>%sum(x==1)有效

sum(c(1, 0, 1, 0, 1, 1), as.numeric(c(TRUE, FALSE, TRUE, FALSE, TRUE, TRUE)))       
 类似资料:
  • 我尝试使用以下R语句,并使用NumPy将其转换为Python: 有与which()等价的Python吗?这里,x是矩阵tmp中的行,k对应于另一个矩阵中的列数。 之前,我尝试了以下Python代码,并收到一个值错误(操作数无法与形状一起广播):

  • 假设我们有两个矩阵,即和,分别为和。 我们如何才能找到哪些行与行相同(反之亦然)? 优选的输出是矩阵,其行数等于矩阵和之间的标识行,两列,即第一列包含矩阵的行数,第二列包含矩阵的行数。

  • 我有两个具有经度和纬度值的数据帧,我想从数据帧#2中提取值(例如数据帧#2的第三列),这些值与数据帧1的列匹配...例如,数据帧1有两列(、),数据帧2有三列(、和一些值)...我想在数据帧1中添加第三列,其中的值对应于两个数据帧中两列完全匹配的值,类似于和...在、不匹配的对中,我希望添加,以便第三列(我要添加到数据。帧1)的长度为=。我尝试了merge函数,但在将的两列与的列进行匹配时遇到了困

  • 问题内容: 我正在尝试运行以下内容。 如果我删除以下行: 至.... 一切都会正常。如果没有,我得到以下错误: 命令不同步; 您现在不能运行此命令 在研究,我认为这可能是由于多个库MySQLi查询同时运行,其中使用但在所有样品和通用数据导向似乎并不适用。 有任何想法吗? 问题答案: MySQL客户端不允许您执行新的查询,在该查询中仍需要从正在进行的查询中获取行。有关常见错误,请参见MySQL文档中

  • 在R中使用pull命令时,是否可以拉动多个列?怎样当我尝试添加第二列(X2)时,R认为我添加了一个新参数。见下文。

  • 我在Cplex中使用Python API来解决一个线性编程问题。使用Cplex时,我的结果如下: 但随后我将LP prolem保存为LP文件,并再次使用Cplex进行求解,结果与第一个略有不同: 下面是我的功能: