data.frame の NA 値を 0 に置き換えようとしています。これは非常に単純な質問ですが、何らかの理由でうまくいきません。これまでの私のコードは次のとおりです。
library(XLConnect)
filenames <- list.files( paste(mainDir,sep=""), pattern="Output.*xls", full.names=TRUE)
data = lapply(filenames, function(f) {
wb = loadWorkbook(f)
readWorksheet(wb, sheet = getSheets(wb), startRow = 1, startCol = 1, header=TRUE) })
for (i in 1:length(data)){
data[[i]][is.na(data[[i]])] <- 0}
Mydata
には 6 つのデータ フレームが含まれており、それぞれ次のようになります。
X North South East West
1 1 1.4 -0.8 NA 0.2
2 2 0.8 0.1 NA NA
3 3 1.1 NA 0.3 NA
4 4 0.7 -0.3 0.5 NA
: : : : : :
: : : : : :
次のように個々のデータ フレームの NA を置き換えようとしても、
x<-data[[1]]
x[is.na(x)]<-0
どちらも機能しませんが、エラーは発生しません。確認str(data)
しましたが、データは間違いなくdata.frame
編集: の出力dput(head(data))
、データは非常に大きいため、これらは最初の数行と最後の数行ですが、すべて非常に似ています
list(structure(list(X.......... = c("01", "02", "03",
"04", "05", "06", "07", "08", "09",
"10", "11", "12"), North = c("NA", "NA", "NA",
"NA", "NA", "NA", "NA", "159268.712943834", "159268.712943834",
"159268.712943834", "NA", "NA"), South = c(0.606714762968571,
0.814522728179517, 0.209726636027901, 0.0444084477658611, -0.374746980093072,
-0.686918667591031, -0.00947578135844365, -0.579281055756145,
-0.447180610635141, 0.0364485438280426, 0.293432135759165, -0.128575801748206
), East = c(0.0453524581429493, -0.715043414690337, -0.726352946071858,
-0.211008344503713, 0.159243426048929, 0.124256257795459, -0.971001351195061,
-1.11413010910649, -0.608926167442848, -1.29473850887024, -1.2685456908235,
-2.19150672218728)
:
:
:
:
.Names = c("X..........", "North", "South", "East", "West"......
:
:
row.names = c(NA, -12L), class = "data.frame"),
structure(list(m = c(0, 0)), .Names = "m", row.names = c(NA,
-2L), class = "data.frame"))
の出力str(data)
、再び多くのデータがありますが、すべて非常に似ているため、最初の数行を次に示します。
List of 6
$ :'data.frame': 12 obs. of 24 variables:
..$ X..........: chr [1:12] "01" "02" "03" "04" ...
..$ North : chr [1:12] "NA" "NA" "NA" "NA" ...
..$ South : num [1:12] 0.6067 0.8145 0.2097 0.0444 -0.3747 ...
..$ East : num [1:12] 0.0454 -0.715 -0.7264 -0.211 0.1592 ...