Вероятно, вы хотите использовать JSON list вместо словаря в качестве элемента верхнего уровня.
Итак, инициализируйте файл пустым списком:
with open(DATA_FILENAME, mode='w', encoding='utf-8') as f:
json.dump([], f)
Затем вы можете добавить новые записи в этот список:
with open(DATA_FILENAME, mode='w', encoding='utf-8') as feedsjson:
entry = {'name': args.name, 'url': args.url}
feeds.append(entry)
json.dump(feeds, feedsjson)
Обратите внимание, что это будет медленным, потому что вы перепишете полное содержимое файла каждый раз, когда вы вызываете add
. Если вы вызываете его в цикле, подумайте о том, чтобы добавить все каналы в список заранее, а затем записать список за один раз.
Это вернет набор данных, где не более двух значений для каждой строки:
dfrm[ apply(dfrm, 1, function(r) sum(is.na(x)) <= 2 ) , ]
Если d
является вашим фреймом данных, попробуйте следующее:
d <- d[rowSums(is.na(d)) < 2,]
Используйте rowSums
. Чтобы удалить строки из фрейма данных (df
), которые содержат точно значения n NA
:
df <- df[rowSums(is.na(df)) != n, ]
или для удаления строк, содержащих n или больше NA
:
df <- df[rowSums(is.na(df)) < n, ]
в обоих случаях, конечно, заменив n
на требуемое число
n
. Возможно, вы захотите объяснить, что означает слово n.
– Ricardo Saporta
8 August 2013 в 02:34
row.names
в df
, почему? Это одно из явлений R, которые я просто не понимаю. Иногда функции выводят лишние вещи, которых я не ожидаю.
– Rhubarb
4 December 2013 в 12:17
Если dat
- имя вашего файла data.frame, то возвращается то, что вы ищете:
keep <- rowSums(is.na(dat)) < 2
dat <- dat[keep, ]
is.na(dat)
# returns a matrix of T/F
# note that when adding logicals
# T == 1, and F == 0
rowSums(.)
# quickly computes the total per row
# since your task is to identify the
# rows with a certain number of NA's
rowSums(.) < 2
# for each row, determine if the sum
# (which is the number of NAs) is less
# than 2 or not. Returns T/F accordingly
Мы используем вывод этого последнего оператора, чтобы определить, какие строки сохранить. Обратите внимание, что нет необходимости фактически сохранять этот последний логический.