为什么我的字符串在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"
时,我只想要它的年份部分并将其转换为整数。
答案 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