【发布时间】:2017-12-05 16:11:45
【问题描述】:
我是一名新程序员,我一直坚持创建函数或循环以避免重复行。
这是我的部分代码:
# Importing dataframes
R1 <- read.table("C:/Users/Data1.txt", header = TRUE)
R2 <- read.table("C:/Users/Data2.txt", header = TRUE)
R3 <- read.table("C:/Users/Data3.txt", header = TRUE)
# Taking only the colunms that I need from each dataframe
R1_dados <- R1[,c(1,8,11,14,24)]
R2_dados <- R2[,c(1,8,11,14,24)]
R3_dados <- R3[,c(1,8,11,14,24)]
# Adding some colunms
R1_dados$E <- c(0,100,200,300,400,500,600)
R2_dados$E <- c(0,100,200,300,400,500,600)
R3_dados$E <- c(0,100,200,300,400,500,600)
# Doing some math between columns from each dataframe
R1_dados$rETR = R1_dados$fvfm*R1_dados$E
R2_dados$rETR = R2_dados$fvfm*R2_dados$E
R3_dados$rETR = R3_dados$fvfm*R3_dados$E
# and so on...
我想知道是否可以创建副本(R1、R2 和 R3)的索引
如果有人帮助我,我将不胜感激。谢谢!
【问题讨论】:
-
如果操作非常相似,您可以将
R1 - R3存储在一个列表中,然后每个操作都变成一个简单的lapply。比如:R_list <- list(R1, R2, R3); R_list_dados <- lapply(R_list, "[", c(1,8,11,14,24); R_list_dados2 <- lapply(R_list_dados, function(x) x$E <- c(0,100,200,300,400,500,600))等等 -
你要不要保留R1、R2...?
-
参见How do I make a list of data frames 了解一些讨论和示例。
-
是的,我确实需要保留 R1、R2... 另外,在后面的代码中,我需要为每个列创建一个具有不同值的列。
标签: r function for-loop lapply