Один из вариантов - извлечь все числа и преобразовать их в матрицу, а затем выполнить расчет.
mat <- stringr::str_extract_all(df$H, "\\d+", simplify = TRUE)
as.numeric(mat[, 1]) * 30.48 + as.numeric(mat[, 2]) * 2.54
#[1] 187.96 177.80 165.10 154.94 165.10 162.56
где mat
-
# [,1] [,2]
#[1,] "6" "2"
#[2,] "5" "10"
#[3,] "5" "5"
#[4,] "5" "1"
#[5,] "5" "5"
#[6,] "5" "4"
Первый столбец - это футы, а второй - дюймы.
И просто для собственного любопытства я хотел решить эту проблему в базе R
sapply(strsplit(sub("(\\d+)'(\\d+).*", "\\1-\\2", df$H), "-"), function(x)
as.numeric(x[1]) * 30.48 + as.numeric(x[2]) * 2.54)
#[1] 187.96 177.80 165.10 154.94 165.10 162.56
Это следует аналогичной логике, которая извлекает 2 числа из строки, используя sub
, разделяя их используя strsplit
, а затем для каждого из них преобразовать его в числовой и выполнить расчет.
У Вас должен быть набор allow_url_fopen в Вашем сервере для этого для работы.
Если Вы не делаете, то можно использовать эту функцию в качестве замены:
<?php
function curl_get_file_contents($URL)
{
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
}
?>
Одолженный отсюда.
Это кажется нечетным. file_get_contents () возвращают какие-либо допустимые данные для других сайтов (не только XML)? URL может только использоваться в качестве параметра имени файла, если fopen-обертки были включены (который они по умолчанию).
Я предполагаю, что Вы собираетесь обработать полученный XML позже - затем необходимо смочь загрузить его в SimpleXml непосредственно с помощью simplexml_load _file ().
try {
$xml = simplexml_load_file('http://www.test.com/foo.xml');
print_r($xml);
} ...
Я рекомендую использовать SimpleXML для чтения XML-файлов, это очень просто в использовании.