我收到一个可能包含或遗漏某个test
变量的列表name
。
当我按名称检索项目时,例如如果temp = test[[name]]
丢失,则name
temp
NULL
为temp
。在其他情况下,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
。
答案 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
转换为字符串,但它是一个解决方案。