mi interessa identificare scalari numerici come:Come si controlla uno scalare in R?
doub <- 3.14
intg <- 8L
so che questi sono trattati come lunghezza vettori. Pertanto, per qualsiasi oggetto R x
, è is.vector(x) && length(x) == 1
il modo corretto per verificare se x
è uno scalare? length(x) == 1
di per sé non è sufficiente in quanto restituisce un valore true, quando deve restituire false, per un frame di dati con una colonna o un elenco con un elemento.
C'è un motivo per cui non esiste una tale funzione is.scalar
implementata nella base R
? Per qualche ragione i due sono riuscito a trovare in altre funzioni di rifiuto per la caso della struttura di dati accennato in precedenza, questi sono:
assertthat::is.scalar(data.frame(a = 1:2))
lambda.tools::is.scalar(data.frame(a = 1:2))
Perché sono i risultati di queste due funzioni chiamate diverso per la mia comprensione (e definizione) di come un La funzione is.scalar
dovrebbe funzionare?
Probabilmente vuoi 'is.atomic' invece di' is.vector'. –
qual è la differenza tra i due? – Alex
Vedere '? Is.atomic':" È comune chiamare i "vettori atomici" di tipi atomici, ma si noti che 'is.vector' impone ulteriori restrizioni: un oggetto può essere atomico ma non un vettore (in questo senso). " – MichaelChirico