OT: Your signature [Bioanalytics]

posted by Helmut Homepage – Vienna, Austria, 2019-03-27 15:41 (2250 d 20:10 ago) – Posting: # 20093
Views: 7,203

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 🖖🏼 Довге життя Україна! [image]
Helmut Schütz
[image]

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

Complete thread:

UA Flag
Activity
 Admin contact
23,424 posts in 4,927 threads, 1,671 registered users;
24 visitors (0 registered, 24 guests [including 17 identified bots]).
Forum time: 12:52 CEST (Europe/Vienna)

An expert is someone who knows some of the worst mistakes
that can be made in his subject,
and how to avoid them.    Werner Heisenberg

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