Вы можете сделать то же самое более кратким, используя approx
.
ip <- sapply(vndusd_merged[-1], function(x) with(vndusd_merged, approx(Date, x, xout=Date)$y))
cbind(vndusd_merged[1], ip)
# Date Ask.Close Bid.Close
# 1 01/01/2014 21115.00 21075.00
# 2 02/01/2014 21160.00 21060.00
# 3 03/01/2014 21115.00 21075.00
# 4 04/01/2014 21116.67 21076.67
# 5 05/01/2014 21118.33 21078.33
# 6 06/01/2014 21120.00 21080.00
# 7 07/01/2014 21115.00 21075.00
# 8 08/01/2014 21120.00 21080.00
# 9 09/01/2014 21115.00 21075.00
# 10 10/01/2014 21110.00 21072.00
# 11 11/01/2014 21113.33 21068.00
# 12 12/01/2014 21116.67 21064.00
# 13 13/01/2014 21120.00 21060.00
# 14 14/01/2014 21110.00 21072.00
# 15 15/01/2014 21110.00 21070.00
# 16 16/01/2014 21120.00 21080.00
# 17 17/01/2014 21110.00 21070.00
# 18 18/01/2014 21110.00 21070.00
# 19 19/01/2014 21110.00 21070.00
# 20 20/01/2014 21110.00 21070.00
Данные:
vndusd_merged <- structure(list(Date = structure(1:20, .Label = c("01/01/2014",
"02/01/2014", "03/01/2014", "04/01/2014", "05/01/2014", "06/01/2014",
"07/01/2014", "08/01/2014", "09/01/2014", "10/01/2014", "11/01/2014",
"12/01/2014", "13/01/2014", "14/01/2014", "15/01/2014", "16/01/2014",
"17/01/2014", "18/01/2014", "19/01/2014", "20/01/2014"), class = "factor"),
Ask.Close = c(21115L, 21160L, 21115L, NA, NA, 21120L, 21115L,
21120L, 21115L, 21110L, NA, NA, 21120L, 21110L, 21110L, 21120L,
21110L, NA, NA, 21110L), Bid.Close = c(21075L, 21060L, 21075L,
NA, NA, 21080L, 21075L, 21080L, 21075L, 21072L, NA, NA, 21060L,
21072L, 21070L, 21080L, 21070L, NA, NA, 21070L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20"))