在我尝试运行的脚本中,有时变量被''
填充(意思是:完全为空),例如。
variable <- ''
有没有人知道检查变量是否具有值''
?
is.null(variable)
似乎不起作用。 ''
与NULL
不同。
答案 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
需要TRUE
或FALSE
,因此无法处理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()