OT: Your signature [Bioanalytics]

posted by Helmut Homepage – Vienna, Austria, 2019-03-27 13:41 (662 d 14:16 ago) – Posting: # 20093
Views: 3,763

Hi ElMaestro,

x=c("Foo", "Bar")
b=data.frame(x)
typeof(b[,1]) ##aha, integer?
b[,1]+1 ##then let me add 1


[image]Lemme explain:

x <- c("Foo", "Bar")
is.character(x)
[1] TRUE
b <- data.frame(x)
is.character(b)
[1] FALSE
is.data.frame(b)
[1] TRUE
print(b)
    x
1 Foo
2 Bar

  So far, so good. What else?
str(b)
'data.frame':   2 obs. of  1 variable:
 $ x:
Factor w/ 2 levels "Bar","Foo": 2 1

  Implicitly you are using the default of data.frame() like here:
c <- data.frame(x, stringsAsFactors=TRUE)
  Check #1
identical(c, b)
[1] TRUE

  Check #2
c == b
        x
[1,] TRUE
[2,] TRUE

  See the point?
typeof(b[, 1]) ##aha, integer?
[1] "integer"

  Correct. Factors are always coded as integers internally.
  Check #3
is.factor(b[, 1])
[1] TRUE

  Note also the output of str(b) above where factors are given in lexical order.
  However, since we defined x <- c("Foo", "Bar"), "Bar" gets the level 2
  and "Foo" the level 1 in b.
b[, 1]+1 ##then let me add 1
[1] NA NA
Warning message:
In Ops.factor(b[, 1], 1) : ‘+’ not meaningful for factors

  Well roared, lion!
  On the other hand:
d <- data.frame(x, stringsAsFactors=FALSE)
print(d)
    x
1 Foo
2 Bar

str(d)
'data.frame':   2 obs. of  1 variable:
 $ x:
chr  "Foo" "Bar"
typeof(c[, 1])
[1] "character"

  Is this what you expected?
d[, 1]+1
Error in c[, 1] + 1 : non-numeric argument to binary operator

  Sure. Rubbish in, rubbish out.
  Personally I prefer a straight error over a warning producing NAs.

:cool:

Dif-tor heh smusma 🖖
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes

Complete thread:

Activity
 Admin contact
21,303 posts in 4,441 threads, 1,487 registered users;
online 2 (0 registered, 2 guests [including 2 identified bots]).
Forum time: Monday 03:58 UTC (Europe/Vienna)

I believe there is no philosophical high-road in science,
with epistemological signposts. No, we are in a jungle
and find our way by trial and error,
building our road behind us as we proceed.    Max Born

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5