Вы можете разделить свои промежутки времени, используя strspit
, как вы уже узнали. Поскольку ваша строка является числовой прямо сейчас, вам сначала нужно преобразовать ее в char, используя функцию as.character()
.
Наше решение будет:
dtimes <- "20151201 070104"
dtsplit = strsplit(as.character(dtimes), " ")
Если у вас есть таблица, содержащая несколько дат, как тот, который вы публикуемую в ваш комментарий:
df <- structure(list(V1 = structure(c(1L, 2L, 3L, 4L, 4L, 5L), .Label = c("20151201 070104", "20151201 070105", "20151201 070119", "20151201 070127", "20151201 070210" ), class = "factor"), V2 = c(160.02, 160.02, 160.01, 160, 160.01, 160.02), V3 = c(2, 2, 1, 1, 1, 2)), .Names = c("V1", "V2", "V3" ), class = "data.frame", row.names = c(NA, -6L))
Моя догадка вам нужно дату из каждого столбца , а не время. Вы можете использовать функцию sapply
применить strsplit к каждой строке (this question has more information about this):
df$date <- sapply(strsplit(as.character(df$V1), " ")[], "[[", 1)
df$time <- sapply(strsplit(as.character(df$V1), " ")[], "[[", 2)
#> df
# V1 V2 V3 date time
#1 20151201 070104 160.02 2 20151201 070104
#2 20151201 070105 160.02 2 20151201 070105
#3 20151201 070119 160.01 1 20151201 070119
#4 20151201 070127 160.00 1 20151201 070127
#5 20151201 070127 160.01 1 20151201 070127
#6 20151201 070210 160.02 2 20151201 070210
'dtsplit = as.numeric (strsplit (dtimes," «) [[1]])' будет работать. 'strsplit' возвращает список, из которого вы берете первый элемент. –
Ваше название плохо сформулировано. Вы хотите разбить строку на целочисленный вектор. Если у вас уже есть целочисленный вектор, вам это не понадобится! Как вы получили этот вектор? Если вы прочтете его из файла, было бы проще правильно его прочитать. –
У меня это из файла, я перечислил вопрос таким образом, как когда я смотрю на вектор в переменном explorer, он указан как целочисленный тип – Gordon