R" return()"在函数末尾返回NA值

时间:2018-04-06 20:31:54

标签: r function

我在R中遇到以下问题。此函数接收带有" ["和"]"的数字向量。在开始和结束。该函数的目标是删除起始和尾随方括号并返回数字的向量。样本输入是" [23,54,12,54,32,45,74,29]"并且输出应该是" 23,54,12,54,32,45,74,29和#34;,作为数字对象。一切正常,直到我尝试返回值。 "返回(东西)"语句返回NA而不是向量。我肯定错过了什么。有什么想法吗。

split_bmi <- function(thing) {

        thing <- as.character(thing)
        thing <- strsplit(thing, "")
        thing <- unlist(thing)
        thing <- thing[c(-1, -length(thing))]
        thing <- capture.output(cat(thing, sep = ""))
        thing <- list(strsplit(thing, ","))
        thing <- as.numeric(thing)
        return(thing)
}

2 个答案:

答案 0 :(得分:4)

thing传递给as.numeric时,

as.numeric是一个列表,但as.numeric(list(letters))不够智能,无法查看列表的元素。例如,NA生成as.numeric(unlist(thing))并发出警告。试试renderSelection(props) { const { meta: { touched, error }, label, input: { onChange, value } } = props; const errText = touched && error ? error : ''; return ( <SelectField floatingLabelText={label} errorText={errText} {...props} value={value} onChange={(e, index, val) => { onChange(val); }} maxHeight={200} > </SelectField> ); }

@joran的解决方案非常好。

答案 1 :(得分:1)

使用stringr包的另一种解决方案。

library(stringr)
split_bmi <- function(x) {
     x <- str_replace(x, "\\[" , "") %>%
          str_replace("\\]", "") %>%
          str_split(pattern = ",") %>%
          unlist() %>%
          as.numeric()
     return(x)
}