如何制作数据框列表以及如何从列表中访问每个数据框?
例如,如何将这些数据框放在列表中?
d1 <- data.frame(y1 = c(1, 2, 3),
y2 = c(4, 5, 6))
d2 <- data.frame(y1 = c(3, 2, 1),
y2 = c(6, 5, 4))
Run Code Online (Sandbox Code Playgroud) 在d:\文件夹中,我有很多Stata文件,例如data_aa_1.dta,data_aa_2.dta,data_aa_3.dta data_bb_1.dta,data_bb_2.dta,data_bb_3.dta,data_cc_1.dta ....我想转换这些文件获得与R中的dta文件一样多的数据帧.所以,我相信我必须循环c("aa","bb","cc")和c(1:3).我尝试过以下内容:
library(foreign)
for(i in c("aa","bb","cc"){
for (j in 1:3){
data_[i]_[j] <-read.dta("d:/folder/data_[i]_[j].dta")
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这看起来不对 - 当然.
任何帮助将不胜感激.
谢谢!
我在优化一段R代码时遇到了麻烦.以下示例代码应说明我的优化问题:
一些初始化和函数定义:
a <- c(10,20,30,40,50,60,70,80)
b <- c(“a”,”b”,”c”,”d”,”z”,”g”,”h”,”r”)
c <- c(1,2,3,4,5,6,7,8)
myframe <- data.frame(a,b,c)
values <- vector(length=columns)
solution <- matrix(nrow=nrow(myframe),ncol=columns+3)
myfunction <- function(frame,columns){
athing = 0
if(columns == 5){
athing = 100
}
else{
athing = 1000
}
value[colums+1] = athing
return(value)}
Run Code Online (Sandbox Code Playgroud)
有问题的for循环看起来像这样:
columns = 6
for(i in 1:nrow(myframe){
values <- myfunction(as.matrix(myframe[i,]), columns)
values[columns+2] = i
values[columns+3] = myframe[i,3]
#more columns added with simple operations (i.e. sum)
solution <- rbind(solution,values)
#solution is a large matrix from outside the for-loop
} …Run Code Online (Sandbox Code Playgroud)