データフレームのリストがあります。各dfには3つの列があり、すべてがタイプcharacter
です。私が欲しいのは、lapply
(または別の*apply
関数)as.numeric
を使用して、「心臓発作」列を数値に変換するだけでなく、各データフレームの他の変数も保持することです。
サンプルデータは次のとおりです。
data <- structure(list(AK = structure(list(hospital = c("HOS_3", "HOS_4"
), state = c("AK", "AK"), `heart attack` = c("13.4", "17.7")), .Names = c("hospital",
"state", "heart attack"), row.names = 3:4, class = "data.frame"),
AL = structure(list(hospital = c("HOS_1", "HOS_2"), state = c("AL",
"AL"), `heart attack` = c("14.3", "18.5")), .Names = c("hospital",
"state", "heart attack"), row.names = 1:2, class = "data.frame"),
AR = structure(list(hospital = c("HOS_5", "HOS_6"), state = c("AR",
"AR"), `heart attack` = c("15.6", "16.9")), .Names = c("hospital",
"state", "heart attack"), row.names = 5:6, class = "data.frame")), .Names = c("AK",
"AL", "AR"))
このように見えます:
> data
$AK
hospital state heart attack
3 HOS_3 AK 13.4
4 HOS_4 AK 17.7
$AL
hospital state heart attack
1 HOS_1 AL 14.3
2 HOS_2 AL 18.5
$AR
hospital state heart attack
5 HOS_5 AR 15.6
6 HOS_6 AR 16.9
まったく同じ構造に戻したいのですが、「心臓発作」列を数値として使用します。これが私がこれまでに試したこと(他のSOの投稿と?docsと遊んでいることに基づいて)と何が悪いのかを説明するコメントです:
lapply(c, function(x) x[3] <- as.numeric(x[[3]])) # returns list of num vectors. Dropped other cols
lapply(c, function(x) x[[3]] <- as.numeric(x[[3]])) # returns list of num vectors. Dropped other cols
rapply(c, as.numeric, classes = 'character', how='list') # Correct structure in output but converts all other cols to NA
sapply(c, function(x) x[,3] <- as.numeric(x[,3])) # returns list of num vectors. Dropped other cols
lapply(c, function(x) lapply(x[,3], as.numeric)) # returns list of num vectors of single length
lapply(c, lapply, as.numeric([[3]])) # error unexpected '[[
lapply(c, function(x) {x[[3]] <- as.numeric(x[[3]])})# returns list of num vectors. Dropped other cols
lapply(c, lapply, as.numeric, [,3]) # error unexpected '[
よろしくお願いします!また、(可能であれば)ベースRだけを使用したいので、別のライブラリを持ち込む必要はありません(セキュリティの問題が発生しているため、常に許可されるとは限りません)。どうもありがとう。
あなたは非常に近かったので、1つの列を変更した後、完全なデータフレームを返す必要があります。したがって、列のクラスを名前で変更する場合は、
data <- lapply(data, function(x) {x$`heart attack` <- as.numeric(x$`heart attack`);x})
または、位置によってクラスを変更したい場合は、
data <- lapply(data, function(x) {x[[3]] <- as.numeric(x[[3]]);x})
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加