我有一个看起来像这样的列表.
my_list <- list(Y = c("p", "q"), K = c("s", "t", "u"))
Run Code Online (Sandbox Code Playgroud)
我想用它们所在列表的名称命名每个列表元素(字符向量).同一向量的所有元素必须具有相同的名称
我能够编写适用于单个列表元素的此函数
name_vector <- function(x){
names(x[[1]]) <- rep(names(x[1]), length(x[[1]]))
return(x)
}
> name_vector(my_list[1])
$Y
Y Y
"p" "q"
Run Code Online (Sandbox Code Playgroud)
但无法找到一种矢量化的方法.如果我使用apply函数运行它,它只会返回列表不变
> lapply(my_list, name_vector)
$K
[1] "p" "q"
$J
[1] "x" "y"
Run Code Online (Sandbox Code Playgroud)
我想要的my_list输出是一个命名向量
Y Y K K K
"p" "q" "s" "t" "u"
Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种方法可以同时调用html_name()和html_text(从rvest包中)并从同一管道(magrittr::%>%)中存储两个不同的结果
这是一个例子:
uniprot_ac <- "P31374"
GET(paste0("https://www.uniprot.org/uniprot/", uniprot_ac, ".xml")) %>%
content(as = "raw", content = "text/xml") %>%
read_html %>%
html_nodes(xpath = '//recommendedname/* |
//name[@type="primary"] | //comment[@type="function"]/text |
//comment[@type="interaction"]/text')
Run Code Online (Sandbox Code Playgroud)
在这一点上,我想从 html_name()
[1] "fullname" "ecnumber" "name" "text"
Run Code Online (Sandbox Code Playgroud)
AND标签内容,而不必通过重写整个管道以将最后一行更改为来创建单独的对象 html_text()
[1] "Serine/threonine-protein kinase PSK1"
[2] "2.7.11.1"
[3] "PSK1"
[4] "Serine/threonine-protein kinase involved ... ...
Run Code Online (Sandbox Code Playgroud)
所需的输出可以是这样的,矢量或数据。帧都没有关系
[1] fullname: "Serine/threonine-protein kinase PSK1"
[2] ecnumber: "2.7.11.1"
[3] Name: "PSK1"
[4] Text: "Serine/threonine-protein kinase involved ... ...
Run Code Online (Sandbox Code Playgroud)