将`NULL`转换为字符串(空或字面上的'NULL`)

时间:2017-08-24 13:37:31

标签: r

我收到一个可能包含或遗漏某个test变量的列表name

当我按名称检索项目时,例如如果temp = test[[name]]丢失,则name temp NULLtemp。在其他情况下,name value XXX is invalid的价值不足,所以我想发出警告,例如temp,其中XXX是sprintf(我为此目的使用as.character)分配默认值。

但是,我很难将其转换为字符串。 R中是否有单行代码来执行此操作?

character(0)生成sprintf,将整个character(0)参数转换为for (name in name_list){ temp = test[[name]] if(is.null(temp) || is_invalid(temp) { warning(sprintf('%s is invalid parameter value for %s', as.character(temp), name)) result = assign_default(name) } else { result = temp print(sprintf('parameter %s is OK', name) } }

工作流程通常如下所示:

is_invalid

PS。 as.character是其他地方定义的函数。我需要''替代'NULL'require 'date' loop do puts "Enter the first month:" @first_month = gets.to_i if (1..12).include?(@first_month) break else puts "Incorrect value a month must be between 1 and 12." puts "Please Try Again." end end t = Date.new(2017,@first_month,1) n = t >> 1

2 个答案:

答案 0 :(得分:2)

test = list(t1 = "a", t2 = NULL, t3 = "b")

foo = function(x){
    ifelse(is.null(test[[x]]), paste(x, "is not valid"), test[[x]])
}

foo("t1")
#[1] "a"

foo("t2")
#[1] "t2 is not valid"

foo("r")
#[1] "r is not valid"

答案 1 :(得分:0)

好吧,最终我的目标是加入两个字符串,其中一个字符串可能为空(null),我意识到,我只能使用paste(temp, "name is empty or invalid")作为我的警告字符串。它并不完全将NULL转换为字符串,但它是一个解决方案。