Добавление вектора T / F в список векторов в R - PullRequest
1 голос
/ 10 октября 2019

У меня есть список из 2 векторов с именами X, Y. Я хочу добавить новый элемент с именем H к каждому из этих двух векторов, который будет отображаться как H = TRUE or FALSE.

НО, вместо того, чтобы показывать TRUE или FALSE, мой вывод показывает 1 и0. Как я могу показать TRUE и FALSE в моем текущем выводе?

H = c(T, F) # The element to be added

L <- list(X = c(K = 22, M = 39), Y = c(K = 54, M = 65)) # List to add to

Map(c, L, H = H) # My current solution

# Current OUTPUT:
# $X
#  K     M     H 
#  22   39     1   # instead of `TRUE`

# $Y
#  K     M     H 
# 54    65     0  # instead of `FALSE`

Ответы [ 2 ]

3 голосов
/ 10 октября 2019

У вас есть эта проблема, потому что каждый элемент списка - это вектор, а вектор - это набор элементов одного типа. Таким образом, невозможно получить то, что вы хотите, используя векторы, логические значения всегда будут преобразованы в числовые, поскольку это типы уже существующих векторов.

Но вы можете использовать списки внутри списка

L <- list(X = list(K = 22, M = 39), Y = list(K = 54, M = 65))
Map(c, L, H = H)
1 голос
/ 10 октября 2019

Мы также можем преобразовать vector в list с as.list из исходных данных и объединить (c), так как vector не допускает многократное type s

Map(c, lapply(L, as.list), H = H)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...