R名单及;数据帧格式
所以我有一个列表作为.rda文件。列表中有51个元素,对应于州缩写,即“ca”、“fl”等。每个州都有一个state.in和state.out元素。例如,有一长串迁移数据可以作为R名单及;数据帧格式,r,list,dataframe,R,List,Dataframe,所以我有一个列表作为.rda文件。列表中有51个元素,对应于州缩写,即“ca”、“fl”等。每个州都有一个state.in和state.out元素。例如,有一长串迁移数据可以作为data\u 9495$ca$state.in和另一个名为data\u 9495$ca$state.out访问。为了使这个巨大的数据文件与其他内容保持一致,我需要更改数据文件中每个状态的state.In和state.out元素中的一些值。数据文件名为data\u 9495,我需要实际更改列表中的元素,以便重新保存数据文件
data\u 9495$ca$state.in
和另一个名为data\u 9495$ca$state.out
访问。为了使这个巨大的数据文件与其他内容保持一致,我需要更改数据文件中每个状态的state.In和state.out元素中的一些值。数据文件名为data\u 9495
,我需要实际更改列表中的元素,以便重新保存数据文件并稍后使用。到目前为止,我得到的是:
datafile<-"data_9495"
datafile<-gsub("\\.rda$","",datafile)
loaded_data <- load(paste("/Users/blah/blah/Listed Data/", datafile, ".rda", sep=""))
d<-get(loaded_data[1])
require("UScensus2010")
data(countyfips)
states<-unique(countyfips[,4])
for(k in 1:length(states)){
state<-states[k]
print(k)
state.in<-as.data.frame(d[[which(names(d)==tolower(state))]][1])
state.out<-as.data.frame(d[[which(names(d)==tolower(state))]][2])
{for(j in 1:dim(state.in)[1])
{
if(state.in[j,3]=="63"&&state.in[j,4]=="050")
{state.in[j,3]<-state.in[j,1]
state.in[j,4]<-state.in[j,2]}
}
for(i in 1:dim(state.out)[1])
{
if(state.out[i,3]=="63"&& state.out[i,4]=="050")
{state.out[i,3]<-state.out[i,1]
state.out[i,4]<-state.out[i,2]}
}
assign(d[[which(names(d)==tolower(state))]][1],state.in)
assign(d[[which(names(d)==tolower(state))]][2],state.out)
}}
datafile嗯,assign
不是必需的,而且语法错误(第二个参数应该是字符向量)
请尝试改用此语法
for(k in 1:length(states)){
state<-states[k]
print(k)
state.in <- d[[which(names(d)==tolower(state))]][["state.in"]]
state.out <- d[[which(names(d)==tolower(state))]][["state.out"]]
...
d[[which(names(d)==tolower(state))]][["state.in"]] <- state.in
d[[which(names(d)==tolower(state))]][["state.out"]] <- state.out
}}
for(k/1:长度(状态)){
state您能否给出一个非常具体的示例,说明在加载数据时存在一个值,您认为该值应该更改,并且在再次保存数据之前,您认为该值应该更改为什么值?它应该遍历行。如果第3列为“63”,同一行的第4列为“050”,则第3列应更改为第1列中的数字(技术上为字符)(类似于“04”),第4列应更改为第2列中的数字(技术上为字符),类似于“035”)。请注意,这都在同一行中。那么您希望更改数据中的哪一行/状态?您希望在哪里看到它不起作用?我需要更改第3列和第4列(有条件地)每个州的state.in和state.out。运行上面的代码后,我只打印了.rda文件,即data9495$ca$state.in,它似乎没有更改。我打印了state.in和state.out,它似乎在那里更改了,但在原始数据文件中没有。我想这意味着我必须以某种方式将它分配回data9495$ca$state.in495对象,但我不确定如何执行。我尝试使用assign()函数分配它,但无法使其工作。