在R中,当paste()参数的值为NA时,如何跳过该参数

在R中,当paste()参数的值为NA时,如何跳过该参数,r,dataframe,paste,na,R,Dataframe,Paste,Na,我有一个数据框,其中有“城市”、“州”和“国家”列。我想创建一个字符串,将“城市、州、国家”连接起来。然而,我的一个城市没有州(而是有一个NA)。我希望该城市的字符串为“城市,国家”。以下是创建错误字符串的代码: # define City, State, Country city <- c("Austin", "Knoxville", "Salk Lake City", "Prague") state <- c("Texas", "Tennessee", "Utah", N

我有一个数据框,其中有“城市”、“州”和“国家”列。我想创建一个字符串,将“城市、州、国家”连接起来。然而,我的一个城市没有州(而是有一个
NA
)。我希望该城市的字符串为“城市,国家”。以下是创建错误字符串的代码:

# define City, State, Country
  city <- c("Austin", "Knoxville", "Salk Lake City", "Prague")
  state <- c("Texas", "Tennessee", "Utah", NA)
  country <- c("United States", "United States", "United States", "Czech Rep")
# create data frame
  dff <- data.frame(city, state, country)
# create full string
  dff["string"] <- paste(city, state, country, sep=", ")

我该如何跳过
NA,
,包括
sep=“,”

另一种方法是在以后修复它:

gsub("NA, ","",dff$string)

#[1] "Austin, Texas, United States"       
#[2] "Knoxville, Tennessee, United States"
#[3] "Salk Lake City, Utah, United States"
#[4] "Prague, Czech Rep"   
备选方案#2是在您拥有名为
dff
data.frame
后使用apply:

apply(dff, 1, function(x) paste(na.omit(x),collapse=", ") )

我本来打算给出一个两段式的答案,但有人把第一段作为自己的答案;-)事实上,我对每一个的性能都很感兴趣,还有可能的问题……如果您有多个包含NAs的专栏,那么有一个关于在粘贴中抑制NAs的一般性讨论。
apply(dff, 1, function(x) paste(na.omit(x),collapse=", ") )