as.character用一个列替换另一个值中的值

时间:2013-09-20 18:58:36

标签: r replace

我有一个包含一系列姓名缩写和名称的数据框。但是,有时Names错误地位于Initials字段中,Name字段为空。它看起来像这样:

Initials <- c('JB', 'MJ', 'SF', 'Obi Wan Kanobi', 'Luke Skywalker', 'LO', 'Darth 
              Vader', 'JS', 'MM', 'John Paul')
Name <- c('John Brown', 'Mike Jones', 'Sally Fields', '', '', 'Leia Organa', '', 
           'Joey Scarface', 'Marilyn Monroe', '')
test <- data.frame(Initials, Name)

我想创建一个Name2字段,其中Name字段中的任何空格都填充了Initials字段中的相应名称。否则,我只想在Name2字段中填充Name字段中的值(例如'John Paul'在Initials中,但Name是空白的 - 我希望Name2的值为'John Paul'。'John Brown'是在Name中,我希望它只显示在Name2中。

我尝试了以下代码,但它只是为Name2吐出一个数字向量:

test$Name2 <- ifelse(test$Name == '', test$Initials, test$Name)

1 个答案:

答案 0 :(得分:1)

这是正确定义字段类型的简单问题。在这种情况下,我的所有输入字段都被识别为因子而不是字符。所以成功的代码看起来像这样:

test$Name2 <- ifelse(test$Name == '', as.character(test$Initials), as.character(test$Name))