r - 我设计的函数没有循环输入序列(x)。它只返回第一个序列的输出
问题描述
我正在尝试这个,我没有得到所需的输出,对于不同的序列应该是不同的。
oops <- function(x){
aacom <- Peptides::aaComp(x)
aacom
c <- data.frame(aacom)
y <- c %>% select(Number)
Tiny_Number<- y[1,]
return(Tiny_Number)
}
oops(c("GLFDIIKKIAESF","KWKLFKKIGAVLKVL")
解决方案
尝试使用map
, 因为aaComp
返回一个列表。
library(Peptides)
library(dplyr)
library(purrr)
oops <- function(x){
aacom <- Peptides::aaComp(x)
aacom %>%
map(~as.data.frame(.)) %>%
map(~select(., Number)) %>%
map(~`[`(., 1, ))
}
oops(c("GLFDIIKKIAESF","KWKLFKKIGAVLKVL"))
#[[1]]
#[1] 3
#
#[[2]]
#[1] 2
Base R 更简单
这是一个不需要管道和 3 次调用的函数map
。它的输出与上面相同。
oops <- function(x){
y <- Peptides::aaComp(x)
lapply(y, '[', 1, 'Number')
}
推荐阅读
- java - jsp servlet中的ArrayList为空
- r - Quantmod R :specifyModel() 错误:两次尝试后 NG3(xts object) 下载失败
- bash - 如何让代码打印出长度在 5 到 10 个字符之间的用户名?
- spring - Spring找不到属性文件
- javascript - vue.js 中的 HTML5 视频元素?
- c# - 获取多级列表应用的段落编号格式文本
- excel - 忽略否定。Rank函数VBA中的值
- javascript - Aurelia 未正确转换 Set 和 Spread 运算符
- php - 邮件发送/失败后重定向并显示 Slim Flash 消息
- python - 使用 read_csv 只读奇数/数字列