OT: Your signature [Bioanalytics]

posted by Helmut Homepage – Vienna, Austria, 2019-03-27 14:41  – Posting: # 20093
Views: 1,877

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:

Cheers,
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
20,134 posts in 4,245 threads, 1,386 registered users;
online 12 (0 registered, 12 guests [including 7 identified bots]).
Forum time (Europe/Vienna): 07:27 CET

A Camel is a Horse designed by committee.    Anonymous

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