首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我在R中使用%>%的函数顺序出现错误?

为什么我在R中使用%>%的函数顺序出现错误?
EN

Stack Overflow用户
提问于 2022-05-03 19:51:59
回答 2查看 47关注 0票数 0

这是我试图运行的代码:

代码语言:javascript
代码运行次数:0
运行
复制
  data_table<-data_table%>%
      merge(new_table, by = 'Sample ID')%>%
      mutate(Normalized_value = ((1.8^(data_table$Ubb - data_table$Ct_adj))*10000))

我想首先从"new_table“中添加新列("Ubb"),然后使用该新列添加一个计算列。但是,我收到一个错误,说明Ubb列不存在。所以它没有在运行变异之前执行合并?当我将函数分开时,一切都很好:

代码语言:javascript
代码运行次数:0
运行
复制
data_table<-data_table%>%
  merge(new_table, by = 'Sample ID')

data_table<-data_table%>%
  mutate(Normalized_value = ((1.8^(data_table$Ubb - data_table$Ct_adj))*10000))

我想保持所有的东西在一起只是为了风格,但我也只是好奇,难道R不应该先执行合并,然后变异吗?管道运行的顺序是如何工作的?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-05-03 20:05:47

您不需要引用带有$符号的列名。即使用Normalized_value = ((1.8^(Ubb - Ct_adj))*10000),因为它现在被合并了。有了$符号,我相信R,即使合并,有原始的data_table仍然在内存中。因为赋值运算符还没有工作。任务将在所有操作完成后进行。

票数 2
EN

Stack Overflow用户

发布于 2022-05-03 20:06:02

试着像这样运行代码:

代码语言:javascript
代码运行次数:0
运行
复制
  data_table<-data_table%>%
      merge(new_table, by = 'Sample ID')%>%
      mutate(Normalized_value = ((1.8^(Ubb - Ct_adj))*10000))

注意,我没有在管道中使用带有$的表名。您的方法是告诉变异列查看向量。也许它在理解合并时的向量长度有一些困难。只需在管道中调用变量名即可。最容易将%>%看作‘然后’:data_table(),然后是merge(),然后是mutate()。您还可以考虑使用left_join而不是merge

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72104767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档