88

コード:

a <- structure(list(`X$Days` = c("10", "38", "66", "101", "129", "185", "283", 
                                 "374")), .Names = "X$Days")

それならa_

$`X$Days`
[1] "10"  "38"  "66"  "101" "129" "185" "283" "374"

a数値の配列に強制したいのですが、強制関数は私を返します

Error: (list) object cannot be coerced to type 'double'

ありがとう、

4

5 に答える 5

156

のすべての要素をa単一の数値ベクトルに変換する必要length(a)があり、1より大きい場合(長さが1であってもOK)、unlist最初にオブジェクトを変換してから変換できます。

as.numeric(unlist(a))
# [1]  10  38  66 101 129 185 283 374

ここには品質管理がないことに注意してください。また、X$Days強大な奇妙な名前。

于 2012-09-12T08:39:45.157 に答える
44

数値に変換する必要がある複数の要素としてリストを作成する場合は、を使用してこれを実現できますlapply(a, as.numeric)

于 2012-09-12T08:41:36.590 に答える
9

リストサブセットを使用して、変換する要素を選択することもできます。リストに複数の要素が含まれていると便利です。

as.numeric(a[[1]])

于 2015-05-22T17:44:59.343 に答える
2

この場合、ループもその役割を果たします(通常は十分に高速です)。

a <- array(0, dim=dim(X))
for (i in 1:ncol(X)) {a[,i] <- X[,i]}
于 2018-10-01T13:10:17.093 に答える
1

一部のデータに問題があります。検討:

as.double(as.character("2.e")) # This results in 2

別の解決策:

get_numbers <- function(X) {
    X[toupper(X) != tolower(X)] <- NA
    return(as.double(as.character(X)))
}
于 2015-08-27T20:12:40.187 に答える