user3206440
user3206440

Reputation: 5049

creating a variable names out of character vector

There are occasions where a vector with column names of data frame need to be passed into a function ( dplyr mutate in my case).

example column name vector is a as c(V1, V2, V3, V4, V5, V6, V7, V8, V9, V10)

I can construct this as a character vector as paste0("V", 1:10).

> paste0("V", 1:10)
 [1] "V1"  "V2"  "V3"  "V4"  "V5"  "V6"  "V7"  "V8"  "V9"  "V10"

How do I transform this such that it can be passed to the median function below instead of writing down the unwieldy long column names in there ?

df %>%
rowwise() %>%
mutate(median_val = median(c(V1, V2, V3, V4, V5, V6, V7, V8, V9, V10), na.rm = T))

Example data

id  loc  V1  V2  V3  V4  V5  V6  V7  V8  V9 V10
1  loc1  80  80  80  80  64  64  80  80  80  80
2  loc2  64  64  64  64  64  NA  NA  NA  NA  NA 
3  loc2 256 256 256 240 240 240 240 240 240 240 
4  loc3  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA

Output Expected

id  loc  median_val
1  loc1  80
2  loc2  64 
3  loc2 240
4  loc3  NA

Upvotes: 2

Views: 619

Answers (1)

and-bri
and-bri

Reputation: 1664

df2 = data.frame(c("a", "b", "c", "d", "e"), c(1:5), c(6:10), c(1,1,1,NA,1), rep(NA,5))
colnames(df2) = paste0("v", 1:5)
apply(df2[,paste0("v", 2:5)], 1, median, na.rm = T)

Upvotes: 1

Related Questions