Следующая функция добавляет суффикс к каждому столбцу data.table:
thefunction <- function (data) {
colnames(data) <- paste(colnames(data), "example", sep = "_")
data
}
library(data.table)
Session1_TopicA_Part3 <- fread(
"A B C D E F iso year
0 A NA 1 NA NA NLD 2009
1 Y NA 2 NA NA NLD 2009
0 Q NA 3 NA NA AUS 2011
1 NA NA 4 NA NA AUS 2011
0 0 NA 7 NA NA NLD 2008
1 1 NA 1 NA NA NLD 2008
0 1 NA 3 NA NA AUS 2012
0 NA 1 NA 1 NA ECU 2009
1 NA 0 NA 2 0 ECU 2009
0 NA 0 NA 3 0 BRA 2011
1 NA 0 NA 4 0 BRA 2011
0 NA 1 NA 7 NA ECU 2008
1 NA 0 NA 1 0 ECU 2008
0 NA 0 NA 3 2 BRA 2012
1 NA 0 NA 4 NA BRA 2012",
header = TRUE
)
Session1_TopicA_Part3 <- thefunction(Session1_TopicA_Part3)
Однако я бы хотел, чтобы добавляемый суффикс был ТОЛЬКО ЧАСТЬЮ имени data.table. (всего 64 различных data.tables), которые в этом примере привели бы к суффиксу _TopicA_Part3
.
Как мне адаптировать синтаксис, чтобы это произошло?
РЕДАКТИРОВАТЬ:желаемый результат зависит от имени data.table.
Если имя data.table равно Session1_TopicA_Part3
, суффикс будет _TopicA_Part3
.
Если имя data.table равно Session2_TopicB_Part6
суффикс _TopicB_Part6
.
Если имя data.table равно Session4_TopicA_Part7
, суффикс _TopicA_Part7
.
РЕДАКТИРОВАТЬ 2: Я сейчас пытаюсь выполнить следующее:
thefunction <- function (data) {
object_name <- get("data") # To get the string of the object "data" added to the function.
object_name1 <- paste0("_", sapply(strsplit(object_name,"_"), `[`, 3))
object_name2 <- paste0("_", sapply(strsplit(object_name,"_"), `[`, 2))
object_name <- paste0(object_name1,object_name2)
colnames(data) <- paste(colnames(data), object_name, sep = "_")
data
}
Но почему-то это всегда возвращает что-то вроде «данных» вместо Session1_TopicA_Part3
.