检查变量是否具有值''

时间:2013-07-15 13:01:31

标签: r string

在我尝试运行的脚本中,有时变量被''填充(意思是:完全为空),例如。

variable <- ''

有没有人知道检查变量是否具有值''

的方法

is.null(variable)似乎不起作用。 ''NULL不同。

3 个答案:

答案 0 :(得分:20)

''是一个空字符。 意味着“完全空” - 确实是NULL

要测试它,只需检查是否相等:

if (variable == '') …

如果您想检查是否存在变量,则需要使用... exists

if (exists('variable')) …

但实际上在普通代码中exists的用例非常少,因为作为代码的作者,您应该知道哪些变量存在哪些变量存在哪些变量。相反,它主要用于库函数。

但是,你得到的错误,

  

缺少需要TRUE / FALSE的值

意味着该变量不存在。相反,if无法处理缺失值 - 即NA。由于许多计算本身包含NA值,因此会出现NA。例如,将NA与任何值(甚至NA本身)进行比较,会再次产生NA

variable = NA
variable == NA
# [1] NA

由于if需要TRUEFALSE,因此无法处理NA。如果您的值有可能是NA,则需要明确检查:

if (is.na(variable) || variable == '') …

但是,通常最好从一开始就从数据中排除NA值,这样它们就不会传播到上述情况中。

答案 1 :(得分:3)

stringi包中有功能。

require(stringi)    
stri_isempty(c("A","")) 

您也可以从github安装此软件包: https://github.com/Rexamine/stringi

答案 2 :(得分:0)

如果您希望同时检查并全部用package com.pedido.meu.telas_meu_pedido; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; public class ItemAdapter extends BaseAdapter { private Context context; private ArrayList<Integer> listaId; private ArrayList<String> listaNome; private ArrayList<Integer> listaStar; public ItemAdapter(Context context, ArrayList<Integer> listaId, ArrayList<String> listaNome, ArrayList<Integer> listaStar) { this.context = context; this.listaId = listaId; this.listaNome=listaNome; this.listaStar=listaStar; } public ItemAdapter(ListaProdutosActivity listaProdutosActivity, ArrayList<Integer> idImages, ArrayList<String> nameList) { this.context=listaProdutosActivity; this.listaId=idImages; this.listaNome=nameList; } @Override public int getCount() { return listaNome.size(); } @Override public Object getItem(int position) { return listaNome.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(context, R.layout.list_item_produtos, null); } ImageView img = convertView.findViewById(R.id.imgListaProdutos); TextView tv = convertView.findViewById(R.id.txtListItemProduto); ImageView imgStar = convertView.findViewById(R.id.imgListaStar); img.setImageResource(listaId.get(position)); tv.setText(listaNome.get(position)); imgStar.setImageResource(listaStar.get(0)); return convertView; } } 替换这些值,则通常使用NA

dplyr::na_if()