Как получить элементы вектора строк без символа [] - PullRequest
0 голосов
/ 28 июня 2019

Как получить элементы вектора строк без символа [1]?

v <- c("a","b","c")
for (i in seq_along(v)) {
  print(v[i])
}

Вместо того, чтобы получить "a", "b", "c", я получил:

[1] "a"
[1] "b"
[1] "c"

Но когда я использую as.symbol

for (i in seq_along(v)) {
  print(as.symbol(v[i]))
}

, я получаю:

a
b
c

без каких-либо []

Ответы [ 2 ]

1 голос
/ 28 июня 2019

print - это функция с вводящим в заблуждение названием.Более точное имя будет show_value_in_interactive_console (но это несколько).Его назначение действительно только для отображения значений в интерактивной консоли R. не подходит для другого использования.

Когда вы действительно хотите отобразить значения для пользователя или сохранить их в файл, вы не хотите использоватьprint.Вместо этого вы хотите использовать

  • Для отображения значений пользователю: message или warning (или stop)
  • Для сохранения текстового представления значений вфайл или иным образом подвергая их системе: writeLines, cat

Все вышеперечисленное обычно используется в сочетании с format, sprintf, as.character и toString, которые выполняют фактическое преобразование значения в текст.

Oh, а as.symbol совершенно не связано с вышеизложенным и не должно использоваться здесь.Это работает для вашей цели чисто случайно.

0 голосов
/ 28 июня 2019

Вы можете печатать, используя as.symbol, и если вам нужен индекс символа, просто напечатайте i до

    for (i in seq_along(v)) {
      print(i)
      print(as.symbol(v[i]))
}

вывод будет выглядеть как

0
a
1
b
2
c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...