所以我有三个数据框,每个数据框有14列。
iowa <- data.frame() #Has 14 columns; let's say 600 records
maine <- data.frame() #Has same 14 columns; let's say 700 records
texas <- data.frame() #Has same 14 columns; let's say 900 records
我将这些数据框放在列表中,
state_List <- list(iowa, maine, texas)
然后我想在state_List到日期格式的每个数据框内更改两列(称为“State_Date”和“US_Date”),我想将除一个列之外的所有列更改为因子。我写了以下内容:
state_List <- lapply(state_List,
function(x){
x$State_Date <- as.Date(x$State_Date, format = "%m/%d/%Y")
x$US_Date <- as.Date(x$US_Date, format = "%m/%d/%Y")
x[, c(1:7, 9:14)] <- as.factor(x[, c(1:7, 9:14)]
}
)
我收到的错误是
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
此错误是由as.factor部分引起的。
但是,如果我摆脱lapply中调用的函数的最后一次评估,只保留两个更改日期字段类的函数,我得到的是:
我想要的是:
感谢您的帮助!
* * 以下正确的代码显示我应根据回应完成的任务:
state_List <- list(iowa = iowa, maine = maine, texas = texas)
state_List <- lapply(state_List,
function(X){
x$State_Date <- as.Date(x$State_Date, format = "%m/%d/%Y")
x$US_Date <- as.Date(x$US_Date, format = "%m/%d/%Y")
x[, c(1:7, 9:14)] <- lapply( x[, c(1:7, 9:14)] , factor)
return(x)
}
)
答案 0 :(得分:2)
该函数内的第三行应该是:
x[, c(1:7, 9:14)] <- lapply( x[, c(1:7, 9:14)] , factor)
最后你应该return(x)
。