【发布时间】:2013-12-02 21:00:12
【问题描述】:
我有一个字符矩阵列表,想将其中的两列(纬度、经度)转换为因子。我已经尝试为此使用 lapply 并且它有效,但它也重塑了我的数据框。我尝试过使用 as.factor 两种方法:一种仅在两个所需的列上(不好,将所有其他列返回为 NA),另一种在整个数据帧上,但在两种情况下都会发生整形。然后我尝试将我的矩阵列表恢复为原始的所需形状,但认为最好不要创建原始问题而不是在事后尝试修复它。关于如何在不发生重塑的情况下转换为因子的任何想法?
尝试仅列:
ix <- 5:6
mytest[ix] <- lapply(mytest[ix], as.factor)
尝试整个df
lapply(mytest, as.factor)
样本数据:
list(structure(c("study1", "study1", "study1", "study1", "study1",
"study1", "study1", "study1", "study1", "study1", "study1", "study1",
"study1", "study1", "study1", "58", "58", "58", "58", "58", "58",
"58", "58", "58", "58", "58", "58", "58", "58", "58", "2011-07-13",
"2011-07-13", "2011-07-13", "2011-07-13", "2011-07-13", "2011-07-13",
"2011-07-13", "2011-07-13", "2011-07-13", "2011-07-13", "2011-07-13",
"2011-07-13", "2011-07-13", "2011-07-13", "2011-07-13", "321",
"329", "323", "324", "61", "326", "6", "60", "49", "10", "7",
"59", "57", "56", "11", "32.884720435", "32.8841969254545", "32.8835599674286",
"32.88419565", "32.8837771221667", "32.88411147", "32.883244695",
"32.8837003266667", "32.8838778530086", "32.8853723146154", "32.8027296698536",
"32.9164754136842", "32.8853777533333", "32.8854051", "32.802755201875",
"-117.24062533", "-117.240416713636", "-117.240532619714", "-117.24070002",
"-117.24038866075", "-117.24022087", "-117.240140015", "-117.239834913333",
"-117.240522195673", "-117.240133633077", "-117.210527201581",
"-117.236141991053", "-117.24063566", "-117.23989078", "-117.210382870833"
), .Dim = c(15L, 6L), .Dimnames = list(NULL, c("study", "ID",
"locDate", "locNumb", "meanLat", "meanLon"))), structure(c("Study2",
"Study2", "Study2", "Study2", "Study2", "Study2", "Study2", "Study2",
"Study2", "Study2", "Study2", "Study2", "Study2", "Study2", "59",
"59", "59", "59", "59", "59", "59", "59", "59", "59", "59", "59",
"59", "59", "2011-07-12", "2011-07-12", "2011-07-12", "2011-07-12",
"2011-07-12", "2011-07-12", "2011-07-12", "2011-07-12", "2011-07-12",
"2011-07-12", "2011-07-12", "2011-07-12", "2011-07-12", "2011-07-12",
"429", "418", "422", "432", "430", "426", "420", "354", "67",
"419", "425", "427", "421", "428", "32.86543857", "32.867004565",
"32.8694241808955", "32.8651107616667", "32.868857725", "32.8693627126536",
"32.8696329253571", "32.86955278", "32.869014345", "32.8692111971429",
"32.8694814566667", "32.8696187847619", "32.8698972233333", "32.868283279",
"-117.254194355", "-117.25283091", "-117.25050148", "-117.254406255417",
"-117.25133879", "-117.235585179972", "-117.250467514464", "-117.25014399",
"-117.25006813", "-117.235456126857", "-117.235959423333", "-117.250773722857",
"-117.250450876667", "-117.2512085715"), .Dim = c(14L, 6L), .Dimnames = list(
NULL, c("study", "ID", "locDate", "locNumb", "meanLat", "meanLon"
))))
【问题讨论】:
-
mytest不是数据框,而是包含两个矩阵的列表。是否要将转换应用于这两个矩阵? -
@Sven Hohenstein。哎呀,没有意识到这一点。它解释了为什么一切都处于相同的模式。我仍然不确定如何解决这个问题。