我有一个数据框“Tester”,如下所示
Tester <- data.frame(A=c(1,3,5,7), B=c(2,4,6,8), C=0)
#A B C
#1 2 0
#3 4 0
#5 6 0
#7 8 0
我想更改C列中的前两个元素,因此它使用动态确定的变量名称(存储在字符串中)读取c(1,1,0,0)。
因为我在几个类似的变量名称上循环这个,所以我使用字符串作为变量名进行操作,并且我已经能够使用get()和assign()来完成所有操作。
因为变量名称存储在字符串中,
Tester[1:2,3] <- 1
是不可能的。
当我尝试使用get
或assign
时,R会抛出“错误的维数”错误
assign(Tester[1:2,3], 1)
or
assign(get("Tester")[1:2,3], 1)
当我尝试双方括号时,它会抛出“不正确的下标数量。”
我在这里不知所措......任何帮助?
答案 0 :(得分:1)
这是一个hacky解决方法
Tester <- data.frame(A=c(1,3,5,7), B=c(2,4,6,8), C=0)
dfname <- "Tester"
colname <- "C"
df <- get(dfname)
df[1:2, colname] <- 1
assign(dfname, df)
get(dfname)
答案 1 :(得分:0)
你的意思是这样的:
> dfName <- "mydf"
> mydf <- data.frame(A = c(1,3,5,7), B = c(2,4,6,8), C = c(0,0,0,0))
> mydf
A B C
1 1 2 0
2 3 4 0
3 5 6 0
4 7 8 0
>
> mydf <- get(dfName)
> mydf$C[1:2] <-1
> get(dfName)
A B C
1 1 2 1
2 3 4 1
3 5 6 0
4 7 8 0
请注意,一旦找到df,只需将其保存到您选择的变量中,然后打印即可。