I installed beepr library and I need to run beep() only if condition is met, example:
library(beepr)
test=data.frame(a=1,b=2)
ifelse(test$b==2,beep(1),beep(2))
Error in rep(yes, length.out = len) : attempt to replicate an object of type 'externalptr'
CodePudding user response:
When using ifelse sound is generated along with the error. The issue with ifelse is that it returns the data of same type as the test value.
From ?ifelse -
A vector of the same length and attributes (including dimensions and "class") as test.
Since beep returns an output different than the test it returns an error.
Use if/else -
library(beepr)
test=data.frame(a=1,b=2)
if(test$b==2) beep(1) else beep(2)
CodePudding user response:
ifelse is not good here, it modified each value, but it needs to retain the same data type.
There for use ifelse:
if(2 %in% test$b) beep(1) else beep(2)
I used in since you probably need in here.
