Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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
使用magrittr设置名称,其中名称和值都是data.frame的变量?_R_Dataframe_Magrittr - Fatal编程技术网

使用magrittr设置名称,其中名称和值都是data.frame的变量?

使用magrittr设置名称,其中名称和值都是data.frame的变量?,r,dataframe,magrittr,R,Dataframe,Magrittr,假设我有以下数据: > data.frame(value = 1:2, name = c("a", "b")) value name 1 1 a 2 2 b 目标: library(magrittr) data.frame(value = 1:2, name = c("a", "b")) %>% setNames(object = .$value, nm = .$name) 我是否可以将其作为输入提供给管道操作符并将其“发送”到setNam

假设我有以下数据:

> data.frame(value = 1:2, name = c("a", "b"))
  value name
1     1    a
2     2    b
目标:

library(magrittr)
data.frame(value = 1:2, name = c("a", "b")) %>% 
   setNames(object = .$value, nm = .$name)
我是否可以将其作为输入提供给管道操作符并将其“发送”到setNames(或magrittr::set_names)

我尝试过的:

library(magrittr)
data.frame(value = 1:2, name = c("a", "b")) %>% 
   setNames(object = .$value, nm = .$name)
我想这是行不通的,因为管道想要移交整个data.frame并将其用作第一个参数。如果我可以跳过这个行为,而使用两个子集,我就会对此感兴趣

(因此,
data.frame(value=1:2,name=c(“a”、“b”))%%>%
是固定的,不被变量替换)

所需输出:

library(magrittr)
data.frame(value = 1:2, name = c("a", "b")) %>% 
   setNames(object = .$value, nm = .$name)
如果没有管道操作符,它会是什么样子:

> a <- data.frame(value = 1:2, name = c("a", "b"))
> setNames(object = a$value, nm = a$name)
a b 
1 2 
>a setNames(object=a$value,nm=a$name)
a b
1 2 

对于这种情况,我们可以简单地将其包装在
{}

library(dplyr)
data.frame(value = 1:2, name = c("a", "b")) %>% 
    { setNames(object = .$value, nm = .$name)}

对于
tidyverse
,还有一个
deframe
,它将给出一个名为
向量

library(tibble)
data.frame(value = 1:2, name = c("a", "b")) %>%
    select(2:1) %>%
    deframe
 #a b 
 #1 2 
非常感谢(该死的)。我已经看到了,却忘了。我可以在11分钟内接受答案。我以后再做!