我收到一個列表test
,它可能包含或缺少某個name
變量。將`NULL`轉換爲字符串(空或者字面上`NULL`)
當我按名稱檢索項目時, temp = test[[name]]
如果name
缺失I temp
是NULL
。在其他情況下,temp
價值不足,因此我想要發出警告,如name value XXX is invalid
,其中XXX是temp
(我爲此使用sprintf
)並指定了默認值。
但是,我很難將其轉換爲字符串。 R是否有單線程來做到這一點?
as.character
產生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)
}
}
PS。 is_invalid
是其他地方定義的函數。我需要Substitute as.character
,這將返回''
或'NULL'
。
這不完全是我的意思。我想要像'ifelse(is.null(temp)|| is_invalid(temp),sprintf('%s不是一個有效的名字,as.character(temp))''。只有'as.character'返回'字符(0)' –
所以,如果我理解正確,你想要一個'is_invalid'函數? –