错误:期待R中的字符串

时间:2018-02-17 18:21:52

标签: r string

我正在运行以下代码:

 mydataframe <- mydataframe %>% 
   mutate(newVar1 = abs(as.numeric(CanBe1 == 0 & lead(var_id, default = 0) == (var_id + 1)) - 1)) %>% 
   group_by(pt, item) %>% 
   mutate(newVar2 = abs(as.numeric((CanBe2 == 0 & lag(var_id, default = 0) == (var_id - 1)) ) -1),
          newVar2 = ifelse(lag(newVar1, default = 0) == 1, 1, newVar2))

但我收到错误:Error:expecting a string。这是什么意思?究竟哪里应该有一个字符串?

以下是我所拥有的数据的几个例子,我希望:

 pt     item   var_id    CanBe1    CanBe2    newVar1    newVar2
 1      9      2         0         0         0          1
 1      9      3         0         0         0          0
 1      9      4         1         0         0          0
 1      9      5         0         0         1          0
 1      9      7         0         0         0          1
 1      9      8         1         0         1          0
 1      9      10        0         1         0          1
 1      9      11        0         0         0          0
 1      9      12        1         0         1          0
 1      9      2         1         0         0          1

我使用的变量是:

 class(mydataframe$pt) = `factor` #even if I change this one to `character` the code doesn't work
 class(mydataframe$item) = `character`
 class(mydataframe$var_id) = `character`
 class(mydataframe$CanBe1) = `numeric`
 class(mydataframe$canBe2) = `numeric`

1 个答案:

答案 0 :(得分:0)

var_id目前是一个字符串。提前将其重新分类为数字将解决它。

 mydataframe <- mydataframe %>% 
   mutate(var_id = as.numeric(var_id), #Switching from character to numeric
     newVar1 = abs(as.numeric(CanBe1 == 0 & lead(var_id, default = 0) == (var_id + 1)) - 1)) %>% 
   group_by(pt, item) %>% 
   mutate(newVar2 = abs(as.numeric((CanBe2 == 0 & lag(var_id, default = 0) == (var_id - 1)) ) -1),
      newVar2 = ifelse(lag(newVar1, default = 0) == 1, 1, newVar2))