使用sapply()

时间:2018-07-05 15:48:12

标签: r

我有以下问题。我有一个数据框,其中R将所有变量(包括仅具有数字的变量)都视为因素。我想使用sapply更改它。 (即使有更好的方法来进行这种转换-也请告诉我-我想知道sapply()的未来应用在这里出了什么问题。)以下示例有效:

x=1:10
y=10:1
z=letters[1:10]
df=data.frame(x, y, z)
df$x=factor(df$x)
df$y=factor(df$y)
df[,c(1,2)]=sapply(df[,c(1,2)], as.numeric)
class(df$y)

它不适用于实际的数据帧。我只是看不到出了什么问题。查看代码和示例:

代码:

provLevDataRep=transform(provLevDataRep,
                      province=toString(province),
                      AC=toString(AC),
                      provLevDataRep[,c(5:7)]=sapply(provLevDataRep[,c(5:7)], as.numeric)
)

示例:

structure(list(year = 2008L, AC = structure(2L, .Label = c("Andalucía", 
"Andalucía                     ", "Aragón", "Aragón                        ", 
"Asturias, Principado de", "Balears, Illes", "Canarias", "Canarias                      ", 
"Cantabria", "Cantabria                     ", "Castilla - La Mancha", 
"Castilla - La Mancha          ", "Castilla y León", "Castilla y León               ", 
"Cataluña", "Cataluña                      ", "Ceuta", "Ciudad de Ceuta               ", 
"Ciudad de Melilla             ", "Comunidad de Madrid           ", 
"Comunidad Foral de Navarra    ", "Comunitat Valenciana", "Comunitat Valenciana          ", 
"Extremadura", "Extremadura                   ", "Galicia", "Galicia                       ", 
"Illes Balears                 ", "La Rioja                      ", 
"Madrid, Comunidad de", "Melilla", "Murcia, Región de", "Navarra, Comunidad Foral de", 
"País Vasco", "País Vasco                    ", "Principado de Asturias        ", 
"Región de Murcia              ", "Rioja, La"), class = "factor"), 
    provCode = 4L, province = structure(4L, .Label = c("A Coruña                                          ", 
    "Albacete                                          ", "Alicante / Alacant                                ", 
    "Almería                                           ", "Araba - Álava                                     ", 
    "Asturias                                          ", "Ávila                                             ", 
    "Badajoz                                           ", "Barcelona                                         ", 
    "Bizkaia                                           ", "Burgos                                            ", 
    "Cáceres                                           ", "Cádiz                                             ", 
    "Cantabria                                         ", "Castellón / Castelló                              ", 
    "Ceuta                                             ", "Ciudad Real                                       ", 
    "Córdoba                                           ", "Cuenca                                            ", 
    "Gipuzkoa                                          ", "Girona                                            ", 
    "Granada                                           ", "Guadalajara                                       ", 
    "Huelva                                            ", "Huesca                                            ", 
    "Illes Balears                                     ", "Jaén                                              ", 
    "La Rioja                                          ", "Las Palmas                                        ", 
    "León                                              ", "Lleida                                            ", 
    "Lugo                                              ", "Madrid                                            ", 
    "Málaga                                            ", "Melilla                                           ", 
    "Murcia                                            ", "Navarra                                           ", 
    "Ourense                                           ", "Palencia                                          ", 
    "Pontevedra                                        ", "Salamanca                                         ", 
    "Santa Cruz de Tenerife                            ", "Segovia                                           ", 
    "Sevilla                                           ", "Soria                                             ", 
    "Tarragona                                         ", "Teruel                                            ", 
    "Toledo                                            ", "Valencia / València                               ", 
    "Valladolid", "Valladolid                                        ", 
    "Zamora                                            ", "Zaragoza                                          "
    ), class = "factor"), population = structure(153L, .Label = c("1.001.900", 
    "1.027.914", "1.030.650", "1.042.131", "1.051.229", "1.074.862", 
    "1.084.341", "1.090.605", "1.098.406", "1.104.479", "1.106.049", 
    "1.127.196", "1.132.792", "1.141.457", "1.146.458", "1.148.775", 
    "1.153.724", "1.207.343", "1.236.739", "1.240.284", "1.392.117", 
    "1.461.979", "1.467.288", "1.517.523", "1.609.557", "1.628.973", 
    "1.825.264", "1.849.268", "1.855.047", "1.917.097", "1.926.285", 
    "1.941.480", "1004788", "1061756", "1100027", "1103442", 
    "1132735", "1151905", "1240175", "138.932", "140365", "144.046", 
    "145.277", "1466818", "157.570", "159.322", "159303", "1623117", 
    "164.268", "164.925", "166.035", "167015", "167609", "168.638", 
    "171.896", "172.510", "173.281", "183.436", "185432", "1868438", 
    "194.214", "1941355", "197.237", "2.486.483", "2.543.315", 
    "2.581.147", "203.841", "207449", "211.375", "217.716", "220.107", 
    "222.909", "224.076", "224909", "228.566", "251.563", "253.686", 
    "2548898", "255426", "305.459", "308.968", "317.053", "317.352", 
    "318.391", "319002", "321932", "322.415", "322293", "323.648", 
    "335.219", "336.926", "339.386", "339.395", "342459", "342748", 
    "351.326", "353.504", "353.619", "355.176", "364.002", "365.972", 
    "366900", "374.826", "392.110", "394.580", "396987", "401.682", 
    "406.267", "409542", "411.531", "414.015", "415.083", "436.029", 
    "438001", "439.768", "479.395", "484694", "497.387", "497.671", 
    "499.284", "5.332.513", "5.511.147", "5.523.922", "510.122", 
    "513.713", "518.081", "519229", "519613", "520.017", "521.661", 
    "526.288", "529.453", "529157", "533.640", "5523784", "572.824", 
    "573.282", "582.327", "585.179", "587508", "588656", "592.250", 
    "6.081.689", "6.436.996", "6.458.684", "604.274", "605.876", 
    "636.924", "639.621", "640.476", "640790", "6454440", "646.633", 
    "654.170", "659033", "664.742", "670.761", "678.459", "686.730", 
    "69.440", "690929", "692.137", "693.371", "694.944", "695.560", 
    "697.959", "699136", "701.211", "704523", "706.185", "707.263", 
    "715148", "716.834", "753.046", "753.054", "756156", "757.795", 
    "76.034", "76.603", "792.182", "795.101", "795.611", "799402", 
    "80.579", "800962", "805.108", "808.420", "84.263", "84509", 
    "84963", "85.584", "884.099", "91.006", "917.297", "918.072", 
    "920088", "92221", "93.593", "932.502", "947.374", "947.639", 
    "95.258", "950919", "956.006", "960111", "962.472", "973.252", 
    "983.820"), class = "factor"), totalPotentialVoters = structure(118L, .Label = c("1.000.624", 
    "1.034.075", "1.068.433", "1.077.550", "1.085.232", "1.087.472", 
    "1.116.276", "1.163.657", "1.194.069", "1.222.109", "1.253.296", 
    "1.469.076", "1.506.129", "1.531.806", "1.899.263", "1.921.158", 
    "1.946.046", "1031733", "1088822", "109.380", "109984", "112.301", 
    "114.212", "1160216", "120.823", "121440", "123.481", "124.226", 
    "1251941", "139.218", "139955", "142.578", "143.769", "143.967", 
    "144427", "147.783", "150.130", "1531161", "157.835", "158886", 
    "163.500", "164.387", "168.486", "173.320", "173.546", "174072", 
    "175.713", "176.265", "178.365", "179.355", "179.570", "182.408", 
    "182321", "1946144", "238.808", "242.800", "247.670", "247.930", 
    "247507", "250.743", "254.579", "254327", "3.980.181", "300.243", 
    "300985", "302.302", "303.109", "303.228", "308.612", "309.456", 
    "309358", "310.083", "310674", "311.095", "311.773", "312.001", 
    "313.207", "313.516", "313836", "346.534", "348.561", "349.082", 
    "349.247", "349547", "350.851", "351037", "352.097", "355.289", 
    "362.679", "364.469", "365513", "386.672", "392.755", "396.117", 
    "396415", "398.343", "4.028.117", "4.131.319", "4.490.040", 
    "4.653.779", "4.927.932", "400.552", "401885", "404.764", 
    "411.081", "4128181", "414.561", "416.491", "417197", "433.056", 
    "433.204", "433667", "434.477", "440.263", "442375", "447.306", 
    "447.708", "449.915", "469.594", "474.058", "488.009", "488.211", 
    "488.388", "489.572", "490192", "491.496", "4913893", "496.483", 
    "498.203", "498771", "499.909", "50.711", "502.530", "502520", 
    "511640", "512.366", "514.208", "518.206", "518838", "530.342", 
    "532.211", "533748", "537.036", "54.690", "543.383", "547.436", 
    "554.799", "557.468", "558.228", "559247", "562.990", "562799", 
    "57.795", "57.805", "575.334", "576.501", "57639", "580.706", 
    "580725", "60.723", "61.587", "61660", "643.313", "651.184", 
    "651727", "652.086", "706.938", "717.387", "725.943", "730.496", 
    "730.740", "734.064", "735.201", "735079", "748.579", "748189", 
    "76.814", "762.221", "763.957", "76986", "77.355", "77.370", 
    "771381", "772.939", "792.773", "794.522", "830368", "833.373", 
    "838543", "842.916", "868.560", "890.054", "901.233", "901970", 
    "948.080", "949.471", "949177", "956.709", "960.033", "969.946", 
    "981.061", "982.230", "982.837", "985087", "989.045", "993.689", 
    "993618"), class = "factor"), totalVoters = structure(103L, .Label = c("1.044.851", 
    "1.072.646", "1.084.712", "1.431.843", "1.439.140", "1.502.871", 
    "100.106", "100.759", "101.838", "103251", "105955", "107.457", 
    "108.191", "110.339", "1105238", "115.806", "117.118", "118.018", 
    "118.856", "119.759", "122.687", "122477", "123297", "126.945", 
    "132.903", "133.031", "134.004", "134.297", "134.351", "134.588", 
    "137830", "1478042", "169.331", "172.154", "172.644", "174.913", 
    "176.707", "179269", "180941", "182.909", "188.562", "189.361", 
    "195475", "196.083", "196.272", "2.654.927", "2.659.818", 
    "2.812.062", "200496", "204.615", "207.140", "207084", "209.246", 
    "211743", "215.046", "217.328", "217.571", "218037", "220.379", 
    "221.706", "233882", "234.130", "235.515", "238.068", "239.735", 
    "241.550", "243.639", "249.269", "249.534", "252419", "258.199", 
    "262151", "266.788", "27.034", "27.483", "270.335", "274.065", 
    "282.634", "284.076", "28445", "2873383", "295812", "297.906", 
    "299003", "3.409.331", "3.489.376", "3.550.858", "301.548", 
    "302.324", "302.605", "308.989", "31.194", "310.377", "312.056", 
    "312.853", "312315", "312815", "315.504", "319.280", "319.958", 
    "32.282", "32.295", "327.332", "330.010", "330.773", "331631", 
    "334.013", "33516", "335561", "336.440", "336.617", "338.720", 
    "341.348", "341.590", "347.861", "350.959", "353.244", "353975", 
    "355.289", "356462", "36.605", "3642127", "367.464", "371.866", 
    "372.732", "375.082", "376484", "377.119", "379.635", "382.981", 
    "390379", "391.154", "391386", "391433", "395.559", "404576", 
    "407.573", "414.102", "416.925", "430.258", "445.488", "452.038", 
    "465.405", "469.437", "472696", "473.847", "477.662", "480.603", 
    "481.925", "483294", "487.681", "488666", "494.171", "494.904", 
    "50.337", "508.957", "510.391", "514.034", "514478", "517.144", 
    "52.252", "521.455", "523637", "52483", "533.089", "537626", 
    "551.149", "551.762", "568.485", "57.419", "579647", "600.463", 
    "619.118", "622.252", "625.444", "625.791", "628200", "637.094", 
    "638.629", "646.432", "647.448", "651.065", "652400", "658824", 
    "676.837", "682745", "700.268", "719.536", "726.865", "733997", 
    "741.554", "747.463", "75.932", "752.086", "768.877", "771.912", 
    "78.929", "783158", "78784", "87.453", "882.601", "89.662", 
    "898.402", "913165", "93139", "94.269", "940.191"), class = "factor")), .Names = c("year", 
"AC", "provCode", "province", "population", "totalPotentialVoters", 
"totalVoters"), row.names = c(NA, -1L), class = c("tbl_df", "tbl", 
"data.frame"))

0 个答案:

没有答案