如何将值插入变量?

时间:2014-08-09 16:41:11

标签: r dataframe

我需要从文件路径中取一个基本名称并将其插入到变量中,以便我可以访问数据框中的列。我已经创建了一些示例数据来说明我想要完成的任务。

创建一些示例数据:

library(raster)    
## Create a matrix with random data & use image()
xy = matrix(rnorm(400),20,20)
image(xy)

# Turn the matrix into a raster
rast = raster(xy)
# Give it lat/lon coords for 36-37°E, 3-2°S
extent(rast) = c(36,37,-3,-2)
# ... and assign a projection
projection(rast) = CRS("+proj=longlat +datum=WGS84")
plot(rast)

# Write to disk:
writeRaster(rast, "C:/temp/12345.tif", format = "tif")

创建栅格路径

path = 'C:/temp/12345.asc

创建栅格对象:

r = raster(file)

对栅格中的随机位置进行采样,并在数据框中对报告值进行采样

df = data.frame(sampleRandom(r, size=1000, cells=TRUE, sp=TRUE))

现在我需要自动将basename插入到变量中,使其看起来像:

test = df$X12345

这是我尝试将基本名称插入测试变量的尝试失败:

require(tools)
name = basename(file_path_sans_ext(path))
test2 = paste('df$', 'X', name, sep = '')

>test2
[1] "df$X12345"

此方法似乎创建了正确的字符“df $ X12345”,但我无法通过调用test2来访问数据框。 如何将一系列字符构建到一个正常运行的变量中,以便我可以访问特定的数据框列?

2 个答案:

答案 0 :(得分:1)

也许您正在寻找parseeval

df <- data.frame(a = 1, b = 2)
test2 <- "df$b"
eval(parse(text = test2))
# [1] 2

答案 1 :(得分:0)

  

test = df [,paste0(&#39; X&#39;,name)]

这是你正在寻找的吗?