将字符串作为变量分配给数据框
Assigning strings to a data frame as variables
见下文
for(stockName in c("AAPLstock", "FBstock", "GOOGstock", "HPQstock", "MSFTstock", "YHOOstock")){
assign(paste(stockName), read.table(paste(stockName,'.txt', sep = ""), quote="\"", comment.char="")) }
这会创建这些变量。这很酷
ls(pattern = "stock")
[1] "AAPLstock" "FBstock" "GOOGstock" "HPQstock" "MSFTstock"
[6] "stockName" "YHOOstock"
当我尝试将它们全部分配给如下所示的数据框时
df<-list(ls(pattern = "stock"))
> df
[[1]]
[1] "AAPLstock" "FBstock" "GOOGstock" "HPQstock" "MSFTstock"
[6] "stockName" "YHOOstock"
我想要的是 df 将这些股票包含为变量,而不是字符串。所以下面的函数给了我想要的结果
df <- list(AAPLstock, FBstock, GOOGstock, HPQstock, MSFTstock, YHOOstock)
但这需要我输入所有变量。问题是,我打算这样做,但有更多的股票,我不想输入 100 个变量的名称,而且更改起来会很痛苦。因此,我想要一种使用 ls() 或类似方法将表示变量的字符串分配给数据框的方法。
我试过 Parse 和 assign,但他们仍然分配 df 字符串而不是变量。
考虑使用 mget() 通过字符串引用拉取多个变量。
df <- data.frame(mget(ls(pattern = "stock")), stringsAsFactors = FALSE)
但如前所述,还可以考虑构建一个 运行 股票列表并将 rbind 绑定到数据框:
stockName <- c("AAPLstock", "FBstock", "GOOGstock", "HPQstock", "MSFTstock", "YHOOstock")
listOfStocks <- lapply(stockName,
function(s) {
read.table(paste(s,'.txt', sep = ""),
quote="\"", comment.char="")
})
df <- do.call(rbind, listOfStocks)
见下文
for(stockName in c("AAPLstock", "FBstock", "GOOGstock", "HPQstock", "MSFTstock", "YHOOstock")){
assign(paste(stockName), read.table(paste(stockName,'.txt', sep = ""), quote="\"", comment.char="")) }
这会创建这些变量。这很酷
ls(pattern = "stock")
[1] "AAPLstock" "FBstock" "GOOGstock" "HPQstock" "MSFTstock"
[6] "stockName" "YHOOstock"
当我尝试将它们全部分配给如下所示的数据框时
df<-list(ls(pattern = "stock"))
> df
[[1]]
[1] "AAPLstock" "FBstock" "GOOGstock" "HPQstock" "MSFTstock"
[6] "stockName" "YHOOstock"
我想要的是 df 将这些股票包含为变量,而不是字符串。所以下面的函数给了我想要的结果
df <- list(AAPLstock, FBstock, GOOGstock, HPQstock, MSFTstock, YHOOstock)
但这需要我输入所有变量。问题是,我打算这样做,但有更多的股票,我不想输入 100 个变量的名称,而且更改起来会很痛苦。因此,我想要一种使用 ls() 或类似方法将表示变量的字符串分配给数据框的方法。
我试过 Parse 和 assign,但他们仍然分配 df 字符串而不是变量。
考虑使用 mget() 通过字符串引用拉取多个变量。
df <- data.frame(mget(ls(pattern = "stock")), stringsAsFactors = FALSE)
但如前所述,还可以考虑构建一个 运行 股票列表并将 rbind 绑定到数据框:
stockName <- c("AAPLstock", "FBstock", "GOOGstock", "HPQstock", "MSFTstock", "YHOOstock")
listOfStocks <- lapply(stockName,
function(s) {
read.table(paste(s,'.txt', sep = ""),
quote="\"", comment.char="")
})
df <- do.call(rbind, listOfStocks)