df3 = do.call(rbind, lapply(split(df2, df2$bands), function(x)
merge(x, df1, by = "type", all = TRUE)))
NROW(df3)
# [1] 50
Возможно, вам придется изменить порядок строк, если это важно.
Необходимо передать InvariantCulture
к методу.
Причина позади этого состоит в том, что Ваши региональные настройки, вероятно, устанавливают .
как символ разделителя и не десятичная точка.
double.TryParse("20.0", NumberStyles.Any,
CultureInfo.InvariantCulture, out x);