R中的字符串类型为double

时间:2018-02-26 04:53:05

标签: r

为什么我的字符串在R中是双重的。我是R的新手,非常困惑。如何将变量转换为字符串或字符。

Browse[1]> x
[1] "2005-04-08"
Browse[1]> is.character(x)
[1] FALSE
Browse[1]> typeof(x)
[1] "double"
Browse[1]> is.String(x)
[1] FALSE

当我试图编写这个函数时,这非常令人困惑:

function(x) {
  if (is.na(x)) { return(0)}
  if (is.numeric(x)) { return(x) }
  if (is.character(x)) {
    jj = strsplit(x, "-")[[1]]
    if (length(jj) > 1) { return(as.numeric(jj[1])) }
  }
}

x = NA第一个条件通过时。当x = 2017 or 2000 or some integer year时,第二个条件通过。当x = "2005-04-08"时,我只想要它的年份部分并将其转换为整数。

1 个答案:

答案 0 :(得分:0)

知道了。你不能双重使用变量,这是我之前的答案的问题。这里有点晚了:)

fun <- function(x) {
  if (is.na(x)) { return(0)}
  if (is.numeric(x)) { return(x) }
  if (is.character(x)) {
    jj = strsplit(x, "-")[[1]]
    if (length(jj) > 1) { return(as.numeric(jj[1])) }
  }
  if(is.double(x)){
    y <- as.character(x)
    return(as.integer(substr(y ,1,4)))}
}

测试。

sys <- Sys.Date()
yyy <- fun(sys)
yyy
[1] 2018
is.double(yyy)
[1] FALSE
is.integer(yyy)
[1] TRUE