我正在寻找相反的get().
给定一个对象名称,我希望有一个表示该对象的字符串直接从该对象中提取.
foo作为我正在寻找的功能的占位符的简单示例.
z <- data.frame(x=1:10, y=1:10)
test <- function(a){
mean.x <- mean(a$x)
print(foo(a))
return(mean.x)}
test(z)
Run Code Online (Sandbox Code Playgroud)
会打印:
"z"
Run Code Online (Sandbox Code Playgroud)
我的工作,在我目前的问题中更难实现的是:
test <- function(a="z"){
mean.x <- mean(get(a)$x)
print(a)
return(mean.x)}
test("z")
Run Code Online (Sandbox Code Playgroud) 我有一个文件列表.我还有一个"名称"列表,我substr()从这些文件的实际文件名中获取.我想为列表中的每个文件添加一个新列.此列将包含"names"中相应元素,重复次数为文件中的行数.
例如:
df1 <- data.frame(x = 1:3, y=letters[1:3])
df2 <- data.frame(x = 4:6, y=letters[4:6])
filelist <- list(df1,df2)
ID <- c("1A","IB")
Run Code Online (Sandbox Code Playgroud)
伪代码
for( i in length(filelist)){
filelist[i]$SampleID <- rep(ID[i],nrow(filelist[i])
}
Run Code Online (Sandbox Code Playgroud)
//基本上在filelist的每个数据框中创建一个新列,并用重复的相应ID值填充该列
我的输出应该是这样的:
filelist[1] 应该:
x y SAmpleID
1 1 a 1A
2 2 b 1A
3 3 c 1A
Run Code Online (Sandbox Code Playgroud)
fileList[2]
x y SampleID
1 4 d IB
2 5 e IB
3 6 f IB
Run Code Online (Sandbox Code Playgroud)
等等.....
任何想法如何做到这一点.
给定数据帧列表l如下:
l <- list(a = data.frame(a_1 = c(11, 12),
a_2 = c(13, 14)),
b = data.frame(b_1 = c(21, 22),
b_2 = c(23, 24)),
c = data.frame(c_1 = c(31, 32),
c_2 = c(33, 34)))
print(l)
Run Code Online (Sandbox Code Playgroud)
出去:
现在我想new_col使用每个数据框的名称附加一个新列:
l[['a']]$new_col = 'a'
l[['b']]$new_col = 'b'
l[['c']]$new_col = 'c'
Run Code Online (Sandbox Code Playgroud)
names(l)我想知道如何自动使用哪个为每个数据框附加列[1] "a" "b" "c"?谢谢。
最终的结果会是这样的: