我在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)
}
答案 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)
}