在R中执行下面的计算时,列标题作为代码返回。如何分配特定的列标题?
library (dplyr)
it_cs7_fc <- it_cs7 %>%
mutate((difference_1 = CS7_end - CS7_start))
字符串
输出量:
(difference_1 = CS7_end - CS7_start) : num 0.0403 0 0.0495 0.2478 0.1796 ...
型
如何更改列标题?尝试重命名,但没有帮助
it_cs7_fc <- it_cs7 %>%
mutate((difference_1 = CS7_end - CS7_start)%>%
rename(difference_1 = CS7_diff))
型
谢谢.
1条答案
按热度按时间oknwwptz1#
你的括号太多了。
在许多(大多数?)放在R中,额外的一组括号没有害处,通常只是加强代数分组(例如,
(1+1)
或(((1+1)+2))
)。然而,在函数调用中,它们可以改变参数的解释方式。作为一个例子,看看这个函数:
字符串
称之为“正常”的方式工作正常:
型
但是,如果我们用一组额外的括号包围参数,我们会看到,虽然仍然有一个参数传递,但它没有命名。在此之前,请快速查看对象
quux
是否存在于您的本地环境中。(如果存在,请选择另一个不存在的名称.型
在使用
mutate
时,该函数通常要求其所有参数都命名为1(实际上,所有函数调用都将受到这种影响,而不仅仅是在dplyr
中)。现在,查看您的环境,发现
quux
现在存在,值为3
。(在我的dots <- list(...)
中),R然后计算...
表达式。(它选择不从里到外进行评估,以便支持“懒惰”评估......对于这个答案来说太多了也许吧。)现在我们在fun
的“内部”,并希望计算...
-表达式,它将表达式(quux = 1+2)
视为其第一个(唯一)参数,它在调用上下文中计算(这就是为什么quux
是在call_ing_ environment中而不是在函数中调用的原因)。当该表达式被求值时,它的副作用是在调用环境中创建(或覆盖)quux
,并将值3
存储在其中。现在,表达式本身的值(仅为3
,没有名称)作为...
-expressions返回。P.S.
1.从技术上讲,
mutate
和类似的dplyr
动词可以接受未命名的表达式,该表达式的返回值返回一个已经有名称的类似data.frame
的对象。例如:型
我认为这并不经常使用,至少在SO的问题中没有,在大多数教授
dplyr
和数据科学的教程中也没有。(对于dplyr-devs,如果这个方法可以扩展到任何list
-like对象,而不仅仅是data.frame
-objects,那就太好了。)