Как получить элементы вектора строк без символа [1]?
v <- c("a","b","c")
for (i in seq_along(v)) {
print(v[i])
}
Вместо получения «а», «б», «в» я получил:
[1] "a"
[1] "b"
[1] "c"
Но когда я использую as.symbol
for (i in seq_along(v)) {
print(as.symbol(v[i]))
}
я получаю:
a
b
c
без всяких [ ]
Или writeLines
Вы знаете, что R не имеет скаляров? Элементы вектора являются векторами длины один.





Вы можете печатать, используя as.symbol, и если вам нужен индекс символа, просто напечатайте i перед
for (i in seq_along(v)) {
print(i)
print(as.symbol(v[i]))
}
вывод будет выглядеть
0
a
1
b
2
c
print — это неправильный способ сделать это в 99% случаев.
Да, вы правы, я лично использую "кошку", но я использовал печать, потому что он использовал ее, чтобы ему было легче понять
print — это функция с вводящим в заблуждение названием. Более точным названием было бы show_value_in_interactive_console (но это немного). На самом деле он предназначен только для отображения значений в интерактивной консоли R. Это нет подходит для другого использования.
Когда вы действительно хотите отобразить значения пользователю или сохранить их в файл, вы действительно хотите использовать нетprint. Вместо этого вы хотите использовать
message или warning (или stop)writeLines, catВсе вышеперечисленное обычно используется в сочетании с format, sprintf, as.character и toString, которые выполняют фактическое преобразование значения в текст.
О, и as.symbol совершенно не имеет отношения к вышеизложенному и не должен использоваться здесь. Это работает для вашей цели чисто случайно.
Не то чтобы я знал до простого существования cat и что предпочтительнее использовать его для предоставления значений системе вместо print, но я использовал print в своем вопросе только для того, чтобы упростить его. На самом деле, я действительно хотел использовать v[i] и as.symbol(v[i]) в качестве аргументов функции. У меня были трудности, и я ошибочно подумал, что причина в [ ]. Это не было, и функция работала нормально.
Используйте
catвместоprint