Вам нужно создать соответствующий вложенный список
m <- matrix(c(1,22,23,34,4,87,23,7,92),nrow=3,byrow=T)
colnames(m)<-c('X1','X2','X3')
m1 <- apply(m,1, function(x) {
list(itemID = unname(x[1]),
recommendedItems = lapply(unname(x[2:3]), function(y) {
list(itemID = y)}
))
})
cat(toJSON(m1))
[
{
"itemID": 1,
"recommendedItems": [
{
"itemID": 22
},
{
"itemID": 23
}
]
},
{
"itemID": 34,
"recommendedItems": [
{
"itemID": 4
},
{
"itemID": 87
}
]
},
{
"itemID": 23,
"recommendedItems": [
{
"itemID": 7
},
{
"itemID": 92
}
]
}
]
sizeof
не говорит вам длину вектора. Он сообщает вам размер (в байтах) фактического объекта.
Чтобы получить количество элементов, хранящихся в векторе, используйте unsorted.size()
.
Обратите внимание, что в C ++ 11 и более поздних версиях вы можете итерировать свой вектор с помощью цикла на основе диапазона:
for (const auto& str : unsorted) {
double x = stod(str);
if (!isnan(x)) {
sanitised.push_back(x);
}
}
Если вы хотите получить размер вектора (количество элементов), вы должны использовать vector.size()
вместо sizeof(vector)
, который возвращает вам размер вектора в памяти, подсчитанной в символах (стандарт C ++).