substr () принимает вектор как строку, а не значения вектора как строки

Вот лучшее решение для этой проблемы: В представлении добавьте все ID (Ключи). Рассмотрим несколько таблиц с именем (Первый, Второй и Третий)

@Html.HiddenFor(model=>model.FirstID)
@Html.HiddenFor(model=>model.SecondID)
@Html.HiddenFor(model=>model.Second.SecondID)
@Html.HiddenFor(model=>model.Second.ThirdID)
@Html.HiddenFor(model=>model.Second.Third.ThirdID)

В коде C #,

[HttpPost]
public ActionResult Edit(First first)
{
  if (ModelState.Isvalid)
  {
    if (first.FirstID > 0)
    {
      datacontext.Entry(first).State = EntityState.Modified;
      datacontext.Entry(first.Second).State = EntityState.Modified;
      datacontext.Entry(first.Second.Third).State = EntityState.Modified;
    }
    else
    {
      datacontext.First.Add(first);
    }
    datacontext.SaveChanges();
    Return RedirectToAction("Index");
  }

 return View(first);
}
0
задан Sotos 16 January 2019 в 14:49
поделиться

1 ответ

Я хочу извлечь из третьего символа в векторе выше (в частности, извлечь число)

Я бы использовал gsub(), который находит определенный шаблон и заменяет его.

Variables <- c("EA10", "EA14", "EA15")
gsub(pattern="\\D", replacement="", Variables)
#[1] "10" "14" "15"
  • pattern="\\D" соответствует каждому, что не является цифрой (больше здесь )

  • replacement="" заменяет его на пустое пространство


В качестве альтернативы вы, конечно, можете извлечь непосредственно цифры, используя, например, str_extract() из пакета stringr:

stringr::str_extract(string = Variables, pattern = "\\d+") 
# \\d+ matches multiple digits in the string
#[1] "10" "14" "15"

Внутри data.frame:

df["Variable"] = gsub(pattern="\\D", replacement="", df["Variable"])

или:

df["Variable"] = stringr::str_extract(df["Variable"], pattern="\\d+")
0
ответ дан RLave 16 January 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: