Here is the .table data approach recommended for large tables.
require(data.table)
temp <- data.frame(x1 = c(1:4), x2 = c("INDIA", "INDIA", "US", "US"))
PortfolioIndices <- data.frame(Country = c("INDIA", "US", "UK"),
Index = c("CNX50", "SP500", "FTSE100"),
CCY = c("INR", "USD", "GBP"))
temp <- as.data.table(temp)
PortfolioIndices <- as.data.table(PortfolioIndices)
setkey(temp, x2)
setkey(PortfolioIndices, Country)
PortfolioIndices[temp, list(x1,Index,CCY),]